我的Python程序中有一个save函数,如下所示:
def Save(n):
print("S3")
global BF
global WF
global PBList
global PWList
print(n)
File = open("C:\KingsCapture\Saves\\" + n + "\BF.txt", "w")
pickle.dump(BF, File)
File = open("C:\KingsCapture\Saves\\" + n + "\WF.txt", "w")
pickle.dump(WF, File)
File = open("C:\KingsCapture\Saves\\" + n + "\PBList.txt", "w")
pickle.dump(PBList, File)
File = open("C:\KingsCapture\Saves\\" + n + "\PWList.txt", "w")
pickle.dump(PWList, File)
这里,n是“1”。
我发现一个错误如下:
File "C:/Python27/KingsCapture.py", line 519, in Save
File = open("C:\KingsCapture\Saves\\" + n + "\BF.txt", "w")
TypeError: an integer is required
在shell中执行相同的加载时,不会出现错误:
>>> File = open("C:\KingsCapture\Test\List.txt", "r")
>>> File = open("C:\KingsCapture\Test\List.txt", "w")
>>> n = "1"
>>> File = open("C:\KingsCapture\Saves\\" + n + "\BF.txt", "r")
>>> File = open("C:\KingsCapture\Saves\\" + n + "\BF.txt", "w")
为什么这有问题?
您可能从操作系统模块中导入了一个星形:
所以你使用了错误的open函数。(我想您可以简单地完成
from os import open
,但这是不太可能的)一般来说,应该避免这种导入样式,在实际情况下也应该避免使用global
。您需要转义字符串:字符串中的\是转义字符。
要么逃离刀口:
或者使用原始字符串:
正如DSM所指出的,您使用的是http://docs.python.org/library/os.html#os.open而不是内置的open()函数。
在os.open()中,第二个参数(mode)应该是整数而不是字符串。因此,如果您应该使用
from os import *
,那么只需使用以下参数之一替换模式字符串:相关问题 更多 >
编程相关推荐