2013-06-16 2 views
0

У меня есть код python, который открывает текстовый файл, который читает и выполняет некоторые процессы. Входной текстовый файл должен обновляться каждый день новым. В настоящее время я использую следующий код для открытия файла.Открытые текстовые файлы с разными именами-Python

f = open('sample20130616.txt','r') 

Но в этом методе некоторые один должен идти внутри кода и измените имя файла (Поскольку имена файлов не является уникальным).

Каков правильный метод для этого?

+1

Я хотел бы использовать имя файла автоматически генерируется из текущей даты или принять имя файла в качестве входного параметра – Curious

ответ

1

Передайте имя файла в качестве параметра при вызове приложения:

python myapp.py file.txt 

Затем в коде:

import sys 

if __name__ == '__main__': 
    filename = sys.argv[1] 
    f = open(filename) 
+0

Не могли бы вы объяснить это? –

+0

Когда вы выполняете свое приложение, вы указываете, какой файл вы хотите читать/писать, не изменяя свой код. Этот код получает имя файла при запуске вашего скрипта – jabaldonedo

+0

Спасибо Очень много ... Работаю .. :) –

1

Вы можете легко генерировать текущую дату и, следовательно, ваше имя файла с datetime модуля:

import datetime 

today = datetime.date.today() 

filename = 'sample{0}{1:02d}{2:02d}.txt'.format(today.year, today.month, today.day) 
f = open(filename,'r') 
+0

Спасибо халфлингам! Метод jabaldonedo работает хорошо! –

+0

Несомненно, но тогда он автоматически не генерирует имя файла. У вас будет каждый день писать имя файла (что упрощает его использование, но все равно требует, чтобы пользователь знал, как все кодируется) + Если вы хотите сделать скрипт, который автоматизирует эту операцию, вам все равно придется как-то сгенерируйте имя файла. – halflings

+0

Да, конечно, я тоже попробую это сделать –

0

Используйте встроенную функцию времени!

from time import gmtime, strftime 
    fname='sample'+strftime("%Y%m%d", gmtime())+'.txt' 
    f = open(fname,'r') 
+0

Остерегайтесь: с этим решением месяцы (1-9) будут формироваться в «6» вместо «06», поэтому имя файла будет неправильным. Проверьте мой ответ, который добавляет ведущие нули с параметрами форматирования. – halflings

Смежные вопросы