Форум сайта python.su
Всем привет!
Хочу сделать следующее:
1.получаем от пользователя выбранную директорию (Windwos)
2. считываем, что есть в этом каталоге
3. формируем csv файл c перечнем объектов в выбранном каталоге.
Но что то идет не так:
import sys
import os
import csv
import time
from datetime import datetime
if sys.version_info.major < 3 :
from tkFileDialog import askdirectory
else:
from tkinter.filedialog import askdirectory
dir_path = askdirectory()
dir_path2=dir_path.replace(r"/", "\\")
data = os.listdir(dir_path2)
txt_file = open(r'D:\tempo\data.csv', 'w')
s = []
for j in data:
s.append(dir_path2+j)
with txt_file:
txt_file.write('Объект'+';'+'Дата создания'+ '\n')
for i in s:
data1 = os.path.getctime(i)
txt_file.write(i+';'+datetime.fromtimestamp(data1).strftime('%Y-%m-%d %H:%M:%S')+'\n')
print("Done")
Отредактировано Fedor_Bober (Июнь 14, 2019 13:58:01)
Офлайн
Fedor_Boberиспользуйте os.path.normpath для привдения путей к виду принятому в конкретной ОС
Не понимаю как работать со спецсимволами.
import os print(os.path.normpath('c:/windows/temp')) >>> c:\windows\temp >>>
[code python][/code]
Офлайн
PEHDOMОшибка:
используйте os.path.normpath для приведения путей к виду принятому в конкретной ОС
Офлайн
Fedor_Bober
Я так понимаю, проблема в строке
s.append(dir_path2+j)
s.append(dir_path2 + os.path.sep + j)
Офлайн
Egorro13Да! Точно! Все работает. Спасибо.
Fedor_BoberЯ так понимаю, проблема в строке
Офлайн
Может лучше через os.walk() делать?
Длина кода уменьшится в пару раз, серьёзно
>>> import os >>> path = 'D:\Test' >>> folder = [] >>> for i in os.walk(path): folder.append(i) >>> for address, dirs, files in folder: for file in files: print(address + '\\' + file) D:\Test\Test - 1.txt D:\Test\Новая папка\Test - 1.txt D:\Test\Новая папка\Rtr\Test - 1.txt D:\Test\Новая папка\Rtr\Test - 2.vsdx
Отредактировано AliceCherry (Июнь 18, 2019 11:19:18)
Офлайн