Zip-файл пользовательского ввода

#python

#python

Вопрос:

Недавно я получил некоторый пользовательский ввод для обновления кода другого пользователя здесь, чтобы решить проблему, которую я пытался решить. Оказывается, проблема была в Python 2, а не в Python 3! Вот что у меня есть до сих пор. При запуске кода я получаю сообщение об ошибке:

 fh = open(ZipFileName, 'rb')

FileNotFoundError: [Errno 2] No such file or directory: ''
 
 import os
import urllib
import requests
import zipfile

r = requests.get('urlexample.zip')

with open('data.zip', 'wb') as f:
    f.write(r.content)

ZipFileName = input("Enter full path to zip file:")

fh = open(ZipFileName, 'rb')
z = zipfile.ZipFile(fh)

DestZipFolderName = input("Assign destination folder a name:")
DestPathName = input("Enter destination directory:")
DestPathName = DestPathName   "\"   DestZipFolderName

for name in z.namelist():
    outpath = DestPath
    z.extract(name, outpath)

fh.close()
 

Любые идеи о том, что пошло не так, что было бы чрезвычайно полезно.

Комментарии:

1. Поскольку после ошибки появляется пустая строка, я предполагаю, что вы просто нажимаете enter вместо того, чтобы указывать путь к файловому объекту (следовательно No such file or directory: '' ). ZipFileName должен быть путь к файловому объекту, который задается с помощью пользовательского ввода.

2. От @codesPliff: Вы пробовали rh.zip ? Python иногда привередлив в отношении расширений.

3. Это чрезвычайно интересный стиль кода. Пожалуйста, проверьте PEP 8 для получения стандартного руководства по стилю python.

4. СуперСтормер стиль кода обусловлен тем, что я просто объединяю код и молюсь, чтобы общий код работал. Я просто серьезно занимаюсь Python, но я проверю соглашения в PEP 8.

5. Gmdev, я иногда просто нажимаю enter, потому что я не уверен, что я делаю неправильно, я попытался ввести путь, как в примере ниже, в моем ответе на последний ответ DapperDuck.

Ответ №1:

Ошибка вызвана тем, что пользовательский ввод не был предоставлен. Это означало, что ZipFileName переменная была установлена в пустую строку. Итак, когда он был передан в качестве параметра в open() функцию, произошла ошибка. Я проверил это, запустив эту часть кода:

 import os
import urllib
import requests
import zipfile

ZipFileName = input("Enter full path to zip file:")
fh = open(ZipFileName, 'rb')
z = zipfile.ZipFile(fh)
 

Я ввел путь к тестовому zip-файлу, и программа завершила работу без ошибок.

Комментарии:

1. DapperDuck когда они предлагают ввести полный путь к zip-файлу, они предлагают, например C:\ExampleParentDirectory\ChildDirectory ? или что-то еще?

2. Да, такой путь, но вам не нужны двойные обратные косые черты.

3. Итак, чтобы быть уверенным, что это будет C: ParentDirectoryChildDirectory или C:\ParentDirectoryChildDirectory ?

4. C:ParentDirectoryChildDirectory

5. А, ладно, моя ошибка. Спасибо, DapperDuck, ты очень помог.