Как сохранить файл в определенную папку python

Как сохранять файл в определённую папку?

Правильно ли я перехожу в папку? Если нет, то как правильно?

Вопрос 2:

В коде я пометил строку «X2»:

Правильно ли я перехожу назад? Если нет, то как правильно?

Вопрос 3:

Что это за ошибка?

Вопрос 1

Нет смысла менять рабочую директорию после открытия файла, т.к. файл открылся уже в текущей рабочей директории. Если хотите записать в файл в папке images , то делаете так:

Вопрос 2

Вопрос не актуален, см. ответ на вопрос 1.

Вопрос 3

Как Вам уже ответили, имя файла не может содержать / , т.к. этот символ является разделителем между директориями. В данном случае путь Б/у Samsung Белый в Бишкек.jpeg интерпретируется как:

Заархивируйте файл и сохраните в определенную папку

Это может быть глупый вопрос, но я изо всех сил пытаюсь найти его решение.

Итак, у меня есть файл в данной папке:

Теперь я хочу заархивировать файл и сохранить его в том же месте. Итак, вот моя попытка:

Но он создает внутреннюю zip-папку и сохраняет ее, как показано ниже:

Может ли кто-нибудь сказать мне, как я могу сохранить свой файл прямо в том же месте или месте, указанном ниже:

2 ответа

Перефразировка вопроса

Вопрос немного сбивает с толку, потому что Output\20190101_0100\20190101_0100_11.zip\Output\20190101_0100\20190101_0100_11.csv не будет файлом, а скорее Output\20190101_0100\20190101_0100_11.csv будет файлом в zip-файле Output\20190101_0100\20190101_0100_11.zip (если я не ошибаюсь)

Просто чтобы переформулировать вашу проблему (если я правильно понял):

  • У вас есть файл Output\20190101_0100\20190101_0100.csv (файл 20190101_0100.csv в подкаталоге Output -> 20190101_0100 )
  • Вы хотите создать zip-файл Output/20190101_0100/20190101_0100_11.zip ( 20190101_0100_11.zip в каталоге Output -> 20190101_0100.zip )
  • Вы хотите добавить вышеупомянутый файл CSV Output\20190101_0100\20190101_0100.csv , но без начального пути, то есть как 20190101_0100_11.csv , а не Output\20190101_0100\20190101_0100.csv .

Или, чтобы не запутаться в слишком большом количестве похожих каталогов, давайте упростим это как:

  • У вас есть файл test.csv в подкаталоге sub-folder
  • Вы хотите создать zip-файл test.zip
  • Вы хотите добавить вышеупомянутый файл CSV test.csv , но без начального пути, то есть как test.csv , а не sub-folder/test.csv .

Ответ

Запишите файл с именем filename в архив, предоставив ему архив имя arcname (по умолчанию это то же самое, что и filename , но без буквы диска и с удаленными разделителями пути).

Это означает, что arcname по умолчанию будет передано в filename (у него нет буквы диска или разделителя пути).

Если вы хотите удалить часть подпапки, просто передайте также arcname . например.:

Python | Сортировать и хранить файлы с одинаковым расширением

Вы когда-нибудь хотели найти какой-то конкретный файл в папке, но потом совершенно испугались, когда обнаружили, что эта папка чертовски беспорядочная? Ну, Python спасение здесь.
Используя Python OS-модуль и модуль shutil, мы можем организовать файлы с одинаковыми расширениями и хранить их в отдельных папках.

Посмотрите на изображение, показанное ниже —

Эта папка полностью неорганизована. Если вам предложат найти определенный файл в этой папке (или, возможно, папку большего размера с тысячами файлов), вы застрянете и будете совершенно ошеломлены. Это может быть очень трудно (даже невозможно) найти файл из этого океана беспорядка. Эта проблема может быть решена с помощью Python с несколькими строками кода. Посмотрим, как мы можем это сделать.

Ниже приведена реализация Python —

# Напишите название каталога здесь,
# что нужно отсортировать

# Это создаст правильно организованный
# список со всеми именами файлов
# там в каталоге

# Это будет проходить через каждый файл

for file_ in list_:

name, ext = os.path.splitext(file_)

# Это будет хранить тип расширения

# Это вызывает следующую итерацию,

# если это каталог

# Это переместит файл в каталог

# где имя 'ext' уже существует

if os.path.exists(path + ‘/’ + ext):

shutil.move(path + ‘/’ + file_, path + ‘/’ + ext + ‘/’ + file_)

# Это создаст новый каталог,

# если каталог еще не существует

shutil.move(path + ‘/’ + file_, path + ‘/’ + ext + ‘/’ + file_)

Выход:

Способ скомпилировать файлы python в отдельной папке?

Возможно ли, что Python сохранит .pyc файлы в отдельную папку, в которой находится sys.path ?

Мне хотелось бы этого, потому что я чувствую, что он будет более организованным. Спасибо за любую помощь, которую вы можете мне дать.

Ответов: 8

Существует PEP 304: Управление генерацией файлов байт-кода . Его статус Withdrawn и соответствующий патч отклоняются. Поэтому не может быть прямого способа сделать это.

Если вам не нужен исходный код, вы можете просто удалить *.py файлы. *.pyc файлы могут быть использованы как есть или упакованы в яйцо.

В темные и древние дни 2003 года PEP 304 вышел, чтобы бросить вызов этой проблеме. Его патч был найден желательным. Зависимости переменных переменных среды и версии перекоса разорвали его на клочки и оставили его биты, разбросанные по пустошам.

После долгих лет страданий новый соперник поднялся в последние дни 2009 года. Барри Варшава вызвал PEP 3147 и отправил его на битву, используя умное оружие. PEP разгромил беспорядочные файлы PYC, заглушил испорченный интерпретатор Unladen Swallow и CPython, каждый из которых пытался утверждать, что его файл PYC должен быть триумфальным, и позволил Python легко отдыхать, когда его мертвые призраки время от времени запускали в тупик. PEP 3147 был признан достойным диктатора и был посвящен в роль официальных лиц в дни 3.2.

Начиная с 3.2, Python хранит файлы PYC __pycache__ модуля в каталоге модуля. Каждый файл PYC содержит имя и версию интерпретатора, например __pycache__/foo.cpython-33.pyc . Вы также можете __pycache__/foo.cpython-32.pyc скомпилировать более раннюю версию Python. Правильная магия случается: правильный используется и перекомпилируется, если не синхронизирован с исходным кодом. Во время выполнения просмотрите модуль mymodule.__cached__ для имени файла pyc и проанализируйте его imp.get_tag() . Дополнительную информацию см. В разделе «Что нового» .

TL; DR — работает только на Python 3.2 и выше. Бедные хаки заменяют версии до этого.

Я согласен, что распространение кода в виде яйца — отличный способ сохранить его. Что может быть более организованным, чем один файл, содержащий весь код и метаданные, которые вам когда-либо понадобились. Изменение способа работы компилятора байт-кода приведет к путанице.

Если вам действительно не нравится расположение этих файлов pyc, альтернативой является запуск из папки только для чтения. Поскольку python не сможет писать, никакие файлы pyc никогда не будут сделаны. Вы попадаете в том, что каждый файл python должен быть перекомпилирован сразу после его загрузки, независимо от того, изменили ли вы его или нет. Это означает, что время запуска будет намного хуже.

Я не согласен. Причины неправильны или, по крайней мере, недостаточно хорошо сформулированы; но направление действительно. Есть веские причины для того, чтобы отделить исходный код от скомпилированных объектов. Вот несколько из них (все из них я столкнулся в той или иной точке):

  • встроенное устройство, считывающее ПЗУ, но способное использовать файловую систему памяти в ОЗУ.
  • multi-os dev environment означает совместное использование (с помощью samba / nfs / whatever) моего рабочего каталога и создание нескольких платформ.
  • коммерческая компания хочет только распространять pyc для защиты IP
  • легко запустить тестовый набор для нескольких версий python, используя тот же рабочий каталог
  • более легко очистить переходные файлы (rm -rf $ OBJECT_DIR в отличие от find. -name ‘* .pyc’ -exec rm -f 😉

Во всех этих проблемах есть обходные пути, но они в основном обходные решения НЕ. Правильное решение в большинстве этих случаев было бы для программного обеспечения принимать альтернативное место для хранения и поиска этих переходных файлов.

Если вы готовы пожертвовать поколением байт-кодов для всего этого, есть флаг командной строки:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *