У меня есть код, который я пытаюсь использовать для zip-файла в Python, и я хочу, чтобы выходные данные были другим zip-файлом, но с файлами, измененными на .txt или .csv.
Код, который у меня работает без ошибок, но не может изменить тип файла, и я не могу определить, изменяется ли содержимое.
Я могу изменить отдельные файлы .psa, взятые из zip-архива, по одному, и результат такой: файл .csv с необходимыми изменениями.
Разбивка:
У меня есть zip-папка, состоящая из файлов .psa.
У меня есть код, который может читать отдельный файл .psa и выводить .csv с изменениями.
Я хочу применить этот код к zip-папке со всеми файлами .psa вместо того, чтобы вручную выполнять этот процесс для отдельных файлы.
В настоящее время код, который применяется к отдельному файлу, требует, чтобы я давал имя выходному файлу внутри кода.
Было бы полезно, если бы результирующий файл имел то же имя, что и входной, только с изменением обозначения типа файла на .csv.
Бонус: было бы еще лучше, если бы выходные данные zip-папки представляли собой всего лишь один .csv-файл, включающий в себя содержимое всех выходных файлов в выходной zip-папке. Я думаю, это решит проблему с именами. (Поэтому в основном выводится только один файл вместо многих.)
Ниже приведен код, который работает с отдельными файлами: этот код берет файл .psa и преобразует его в .csv, одновременно изменяя содержимое.
import pandas as pd
import re
`fname = '1 Area 2 - store 15 group.psa'
df = pd.read_csv(fname, usecols=[0,1,2], header=None, names=['type','upc', 'num'])
store = re.search(r'store\s+(\d+)', fname).group(1)
df = df[df['type'] == 'prod'].drop(columns=['type','upc']).assign(store=store)
df.to_csv("output.csv", index=False) `
Ниже приведен код, который я применяю к zip-файлу. В результате создается новый zip-файл, но файлы в нем имеют тот же тип файла .psa.
import pandas as pd
import re
import zipfile
import os
input_zip_path = r'test.zip'
output_zip_path = 'results.zip'
def process_file(file_path):
df = pd.read_csv(file_path, usecols=[0,1,2], header=None, names=['type','upc','num'])
store = re.search(r'store\s+(\d+)',file_path).group(1)
df = df[df['type']=='prod'].drop(columns=['type','upc']).assign(store=store)
df.to_csv("name.csv", index=False)
return df
with zipfile.ZipFile(input_zip_path, 'r') as zin, zipfile.ZipFile(output_zip_path, 'w') as zout:
for file_info in zin.infolist():
with zin.open(file_info) as f, open(file_info.filename, 'w') as fout:
fout.write(str(f.read()))
modified_df = process_file(file_info.filename)
modified_df.to_csv(file_info.filename, index=False)
zout.write(file_info.filename)
os.remove(file_info.filename)
Подробнее здесь: https://stackoverflow.com/questions/780 ... in-the-out
Как я могу применить код к zip-файлу, одновременно изменив тип файла в выходной zip-папке? ⇐ Python
Программы на Python
1769545990
Anonymous
У меня есть код, который я пытаюсь использовать для zip-файла в Python, и я хочу, чтобы выходные данные были другим zip-файлом, но с файлами, измененными на .txt или .csv.
Код, который у меня работает без ошибок, но не может изменить тип файла, и я не могу определить, изменяется ли содержимое.
Я могу изменить отдельные файлы .psa, взятые из zip-архива, по одному, и результат такой: файл .csv с необходимыми изменениями.
Разбивка:
У меня есть zip-папка, состоящая из файлов .psa.
У меня есть код, который может читать отдельный файл .psa и выводить .csv с изменениями.
Я хочу применить этот код к zip-папке со всеми файлами .psa вместо того, чтобы вручную выполнять этот процесс для отдельных файлы.
В настоящее время код, который применяется к отдельному файлу, требует, чтобы я давал имя выходному файлу внутри кода.
Было бы полезно, если бы результирующий файл имел то же имя, что и входной, только с изменением обозначения типа файла на .csv.
Бонус: было бы еще лучше, если бы выходные данные zip-папки представляли собой всего лишь один .csv-файл, включающий в себя содержимое всех выходных файлов в выходной zip-папке. Я думаю, это решит проблему с именами. (Поэтому в основном выводится только один файл вместо многих.)
Ниже приведен код, который работает с отдельными файлами: этот код берет файл .psa и преобразует его в .csv, одновременно изменяя содержимое.
import pandas as pd
import re
`fname = '1 Area 2 - store 15 group.psa'
df = pd.read_csv(fname, usecols=[0,1,2], header=None, names=['type','upc', 'num'])
store = re.search(r'store\s+(\d+)', fname).group(1)
df = df[df['type'] == 'prod'].drop(columns=['type','upc']).assign(store=store)
df.to_csv("output.csv", index=False) `
Ниже приведен код, который я применяю к zip-файлу. В результате создается новый zip-файл, но файлы в нем имеют тот же тип файла .psa.
import pandas as pd
import re
import zipfile
import os
input_zip_path = r'test.zip'
output_zip_path = 'results.zip'
def process_file(file_path):
df = pd.read_csv(file_path, usecols=[0,1,2], header=None, names=['type','upc','num'])
store = re.search(r'store\s+(\d+)',file_path).group(1)
df = df[df['type']=='prod'].drop(columns=['type','upc']).assign(store=store)
df.to_csv("name.csv", index=False)
return df
with zipfile.ZipFile(input_zip_path, 'r') as zin, zipfile.ZipFile(output_zip_path, 'w') as zout:
for file_info in zin.infolist():
with zin.open(file_info) as f, open(file_info.filename, 'w') as fout:
fout.write(str(f.read()))
modified_df = process_file(file_info.filename)
modified_df.to_csv(file_info.filename, index=False)
zout.write(file_info.filename)
os.remove(file_info.filename)
Подробнее здесь: [url]https://stackoverflow.com/questions/78009793/how-can-i-apply-a-code-to-a-zip-file-while-also-changing-the-filetype-in-the-out[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия