我目前正在接受计算机科学的A2研究,我对随机访问文件处理有困难。
我试图有一个列表UsersArray
which存储一些记录数据类型UsersArray = [lion,soso,Sxia]
并循环通过列表并将每个记录存储在文件TEST.DAT
中一个特定的偏移计算像这样的Address = hash(UsersArray[i].Password)
。当我尝试做File.seek(Address)
时会出现问题。它给了我一个错误,告诉我seek()
函数中的参数不正确,我不明白为什么会出现这个错误。
import Users,pickle
File = open("TEST.DAT","rb+")
lion = Users.Users()
lion.Password = "ilovefood"
soso = Users.Users()
soso.Password = "cats123"
Sxia = Users.Users()
Sxia.Password = "luca<3"
UsersArray = [lion,soso,Sxia]
for i in range(3):
Address = hash(UsersArray[i].Password)
File.seek(Address)
pickle.dump(UsersArray[i],File)
File.close()
错误信息:
Traceback (most recent call last):
File "C:\Users\Vaio\Desktop\PythonA2\File Processing\RandomAccessWrite.py", line 17, in <module>
File.seek(Address)
OSError: [Errno 22] Invalid argument
[Finished in 0.1s with exit code 1]
[shell_cmd: python -u "C:\Users\Vaio\Desktop\PythonA2\File Processing\RandomAccessWrite.py"]
[dir: C:\Users\Vaio\Desktop\PythonA2\File Processing]
[path: C:\MinGW\bin;C:\Users\Vaio\AppData\Local\Programs\Python\Python36-32\Scripts\;C:\Users\Vaio\AppData\Local\Programs\Python\Python36-32\]
感谢您的帮助!
我倾向于相信jasonharper坚持这个问题。我使用自己的用户对象复制了您的代码,并注释掉了pickle.dump()
行。我能够使用相应的哈希值打印用户而没有任何问题。然后我取消注释pickle.dump()
并使用我自己的(小)迭代值在File.seek()
中使用;当我这样做,一切正常,python写入文件。我认为您计算的哈希值太大而无法写入文件。不确定它是否属于您的任务,但这些哈希值不能用作文件偏移量。