Я очень новичок в python. Я хочу читать файлы на основе имени файла, а не типа данных. Скажем, что у меня есть Hello.txt_1, Hello.txt_2, Hello.txt_3 в папке, и эти файлы создаются автоматически внешним кодом с последним файлом Hello.txt_3. Теперь я хочу прочитать последний созданный файл Hello.txt_3 и проверить его содержимое. Как это сделать в python? Я выяснил файлы с общим типом данных, но не для общего имени файла.Чтение файлов на основе имени файла, а не типа данных
ответ
Используйте glob для выполнения подстановочных знаков. В следующем примере будут найдены все файлы с именем, указанным вами, и last_file
будет содержать имя последнего по времени создания (или None
, если файлы не найдены).
import glob
import os
last_file = None
time=0
for i in glob.glob("Hello.txt_*"):
if os.path.getctime(i) > time:
last_file = i
PS: Этот вопрос находится на уровне самого новичка и должен быть легко решен путем поиска в Интернете.
Большое спасибо. Когда я редактировал ваш код следующим образом, он правильно дал мне последний созданный файл. – user2269123
импорт Глоб импорт ОС last_file = None время = 0 для г в glob.glob ("Hello.txt_ *"): если os.path.getctime (I)> Время: last_file = я время = last_file print last_file – user2269123
@Jon Clements: Большое спасибо. Я достиг своей цели с последующим добавлением этих строк – user2269123
Из моего понимания вопроса вы, вероятно, захотите проигнорировать типы файлов, поскольку вы не можете зависеть от них, чтобы рассказать вам, что вы хотите знать. Если тип файла содержит число/альфа-число, сортировка сортируется в обратном порядке. Тогда вы можете просто прочитать первый:
#!/usr/bin/python
from os import listdir
from os.path import isfile, join
#this is where you declare you directory
directory_2_look = '/var/tmp/lee/'
#This creates a list of the contents of your directory
files = [ f for f in listdir(directory_2_look) if isfile(join(directory_2_look,f)) ]
#this sorts the files for you in reverse order
files = sorted(files, reverse=True)
print files[0]
#this allows you to read the last file and print it out. If you want to write to it simply change the 'r'
file_to_read = open(join(directory_2_look,files[0]), 'r')
print file_to_read.read()
Результаты будут выглядеть немного так:
[ 'script.py', 'file.txt_99', 'file.txt_4', «файл .txt_3' , 'file.txt_22', 'file.txt_21', 'file.txt_2', 'file.txt_1', 'file.txt_0'] script.py
!/USR/бен/питон из os import listdir из os.path import isfile, join directory_2_look = '/ var/tmp/lee /' files = [f for f in
listdir (directory_2_look) if isfile (join_2_look, f))] print sorted (files, reverse = True) files = sorted (files, reverse = True) print файлов [0] file_to_read = open (join (directory_2_look) файлы [0]), 'г')
печать file_to_read.read()
Спасибо большое.Когда я проверяю эту часть, я получаю одну и ту же программу python, созданную в папке и печатаемой. В примере, который вы указали, возможна ли эта операция только для file.txt, и я предполагаю, что вы должны получить файл.txt_99 как вывод, а не файл script.py или любые другие файлы. – user2269123
Да, вам просто нужно создать скрипт в другом каталоге :-) Кроме того, посмотрите файлы [1]. Это дает вам второй, так как первым является ваш скрипт. Однако это опасно, скажем, вы создаете еще один скрипт в каталоге call script.py1, вам нужно будет посмотреть файлы [2] и так далее. Лучше не создавать скрипты в каталоге, который содержит ваши данные. Я только поместил его туда, потому что хотел, чтобы вы увидели какой-то контент. Все остальные файлы были пусты! :-) – LeeO
Спасибо :-) Но мне нужно выполнить точную операцию, но для файлов, начинающихся только с определенным именем типа «file.txt_», потому что в моем случае есть и другие файлы, созданные вместе с Hello.txt_, например, Error.txt_ и т. Д. Возможно ли такое же действие, но только для файлов, представляющих для нас интерес? – user2269123
- 1. Копирование файлов на основе имени файла, а не типа данных в Python
- 2. Выберите тысячи файлов на основе имени файла
- 3. Копирование файлов на основе условия имени файла
- 4. Переименование файла на основе имени файла другого типа
- 5. Чтение двоичного файла из любого типа файлов
- 6. Сумма размера папки для файлов на основе имени файла/папки
- 7. PowerShell для перемещения файлов на основе части имени файла
- 8. Пакетный файл для копирования файлов на основе имени файла
- 9. BASH - Переименование изображений на основе типа файла
- 10. Различать типы файлов excel на основе байтов, а не расширения
- 11. Копирование файлов в структуре папок на основе формата имени файла
- 12. Перемещение файлов на основе имени файла с помощью powershell
- 13. Создание папок на основе части имени файла
- 14. Создание подкаталогов и сортировка файлов на основе имени файла PYTHON
- 15. Создание массива объектов на основе данных имени файла
- 16. Shell Script: Использование файлов на основе части имени файла
- 17. Использование ADB Pull для вытягивания файлов на основе имени файла
- 18. Переименование файлов на основе символов в имени
- 19. Пакетное перемещение файлов на основе части имени файла - Windows 8
- 20. Загрузка нескольких файлов через FTP на основе имени файла
- 21. Переменная на основе имени
- 22. Копирование файлов на основе имени файла в Matlab
- 23. Перемещение файлов в другую папку на основе фактического имени файла
- 24. Сохранение файлов на основе имени файла в отдельных папках
- 25. Используйте cat для объединения mp3-файлов на основе имени файла
- 26. bash: перемещение файлов в исходный каталог на основе имени файла?
- 27. Applescript для копирования файлов на основе неполного имени файла
- 28. Копирование файлов на основе значения метки времени в имени файла
- 29. каталог Чтение для всех файлов определенного типа файла
- 30. добавление нового столбца и его значение на основе имени файла
'os.path.mtime' будет иметь значение здесь. – squiguy
http://stackoverflow.com/questions/120656/directory-listing-in-python для получения списка файлов – Vorsprung
@squiguy Он, вероятно, хочет 'ctime', а не' mtime' –