OSError:[Errno 22]无效的参数Python文件处理

问题描述 投票:0回答:1

我目前正在接受计算机科学的A2研究,我对随机访问文件处理有困难。

我试图有一个列表UsersArraywhich存储一些记录数据类型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\]

感谢您的帮助!

python hash record binaryfiles file-processing
1个回答
0
投票

我倾向于相信jasonharper坚持这个问题。我使用自己的用户对象复制了您的代码,并注释掉了pickle.dump()行。我能够使用相应的哈希值打印用户而没有任何问题。然后我取消注释pickle.dump()并使用我自己的(小)迭代值在File.seek()中使用;当我这样做,一切正常,python写入文件。我认为您计算的哈希值太大而无法写入文件。不确定它是否属于您的任务,但这些哈希值不能用作文件偏移量。

© www.soinside.com 2019 - 2024. All rights reserved.