OSError: [Errno 22] Неверный аргумент Обработка файла Python - PullRequest
0 голосов
/ 15 сентября 2018

В настоящее время я прохожу курсы А2 по информатике и испытываю трудности с обработкой файлов с произвольным доступом.

Я пытаюсь получить список UsersArray, в котором хранятся некоторые типы данных записей 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\]

Заранее спасибо за помощь!

1 Ответ

0 голосов
/ 16 сентября 2018

Я склонен полагать, что Джейсонхарпер прибил проблему.Я скопировал ваш код, используя мои собственные объекты пользователя, и прокомментировал строку pickle.dump().Я был в состоянии напечатать оба пользователя с соответствующим значением хэша без каких-либо проблем.Затем я раскомментировал pickle.dump() и использовал свое (маленькое) итеративное значение для использования в File.seek();когда я делал это, все работало нормально, и python записывал в файл.Я думаю, что значения хеша, которые вы вычисляете, слишком велики для записи в файл.Не уверен, является ли это частью вашего назначения или нет, но эти значения хеш-функции не будут работать как смещения файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...