Найти - Пользователи
Полная версия: Выбор директории и получение списка файлов в этом каталоге
Начало » Python для новичков » Выбор директории и получение списка файлов в этом каталоге
1
Fedor_Bober
Всем привет!
Хочу сделать следующее:
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")

Не понимаю как работать со спецсимволами.

Да, это скорее всего псевдокод)))
Я только учусь.
PEHDOM
Fedor_Bober
Не понимаю как работать со спецсимволами.
используйте os.path.normpath для привдения путей к виду принятому в конкретной ОС
 import os
print(os.path.normpath('c:/windows/temp'))
>>> 
c:\windows\temp
>>> 
Fedor_Bober
PEHDOM
используйте os.path.normpath для приведения путей к виду принятому в конкретной ОС
Ошибка:

FileNotFoundError: Не удается найти указанный файл: ‘C:\\Users\\user\\AppData\\Local\\Programs\\Python\\Python37-32\\mycsv_temp.py’

Теперь вылезли двойные ))))
Egorro13
Fedor_Bober
Я так понимаю, проблема в строке
 s.append(dir_path2+j)
Т.е. путь dir_path2 - например, “c:\folder”, j - имя файла “file.txt”, получается в итоге “c:\folderfile.txt”, а не “c:\folder\file.txt”
У себя потестил - так работает:
 s.append(dir_path2 + os.path.sep + j)
Fedor_Bober
Egorro13
Fedor_BoberЯ так понимаю, проблема в строке
Да! Точно! Все работает. Спасибо.
AliceCherry
Может лучше через 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

os.walk() создаёт генератор, из которого извлекается кортеж, бла-бла-бла… В интернете легко эта информация ищется, под своё, думаю, сможешь переделать.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB