Я думаю, что что-то пошло не так с созданием ZIP-файла, потому что когда я создаю ZIP-файл в Windows, имеет (портативные) пересылающие кособыки:
zip.exe -r pip pip
updating: pip/ (244 bytes security) (stored 0%)
adding: pip/pip.log (164 bytes security) (deflated 66%)
Но теперь, когда у вас есть файлы С именами файлов, которые содержат «Пути» с Backslashes, вы можете запустить следующую программу в unzip_dir
:
#! /usr/bin/env python
# already created directories, walk works topdown, so a child dir
# never creates a directory if there is a parent dir with a file.
made_dirs = set()
for root, dir_names, file_names in os.walk('.'):
for file_name in file_names:
if '\\' not in file_name:
continue
alt_file_name = file_name.replace('\\', '/')
if alt_file_name.startswith('/'):
alt_file_name = alt_file_name[1:] # cut of starting dir separator
alt_dir_name, alt_base_name = alt_file_name.rsplit('/', 1)
print 'alt_dir', alt_dir_name
full_dir_name = os.path.join(root, alt_dir_name)
if full_dir_name not in made_dirs:
os.makedirs(full_dir_name) # only create if not done yet
made_dirs.add(full_dir_name)
os.rename(os.path.join(root, file_name),
os.path.join(root, alt_file_name))
Это обрабатывает файлы в любом каталоге под каталогом, из которого запущена программа. Учитывая проблему, которую вы описываете, unzip_dir
, вероятно, не имеет никаких подкаталоги, и программа может просто пройти через файлы в текущем каталоге.