Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 14, 2019 13:50:59

Fedor_Bober
От: Екатеринбург
Зарегистрирован: 2019-06-07
Сообщения: 40
Репутация: +  0  -
Профиль   Отправить e-mail  

Выбор директории и получение списка файлов в этом каталоге

Всем привет!
Хочу сделать следующее:
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)

Офлайн

#2 Июнь 14, 2019 14:50:42

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Выбор директории и получение списка файлов в этом каталоге

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



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Офлайн

#3 Июнь 17, 2019 06:38:43

Fedor_Bober
От: Екатеринбург
Зарегистрирован: 2019-06-07
Сообщения: 40
Репутация: +  0  -
Профиль   Отправить e-mail  

Выбор директории и получение списка файлов в этом каталоге

PEHDOM
используйте os.path.normpath для приведения путей к виду принятому в конкретной ОС
Ошибка:

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

Теперь вылезли двойные ))))

Офлайн

#4 Июнь 17, 2019 11:32:49

Egorro13
Зарегистрирован: 2019-04-16
Сообщения: 105
Репутация: +  5  -
Профиль  

Выбор директории и получение списка файлов в этом каталоге

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)

Офлайн

#5 Июнь 17, 2019 12:11:26

Fedor_Bober
От: Екатеринбург
Зарегистрирован: 2019-06-07
Сообщения: 40
Репутация: +  0  -
Профиль   Отправить e-mail  

Выбор директории и получение списка файлов в этом каталоге

Egorro13
Fedor_BoberЯ так понимаю, проблема в строке
Да! Точно! Все работает. Спасибо.

Офлайн

#6 Июнь 18, 2019 11:08:04

AliceCherry
Зарегистрирован: 2019-06-16
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Выбор директории и получение списка файлов в этом каталоге

Может лучше через 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() создаёт генератор, из которого извлекается кортеж, бла-бла-бла… В интернете легко эта информация ищется, под своё, думаю, сможешь переделать.



================================ RESTART ================================

Отредактировано AliceCherry (Июнь 18, 2019 11:19:18)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version