2014-11-24 3 views
0

У меня есть Python, созданный для создания и открытия txt-файла [см. Open document with default application in Python], который я вручную вручную вношу и изменяю. Сразу после этого я хочу, чтобы Python открыл следующий txt-файл. В настоящее время я настроен таким образом, чтобы python ждал ключевую команду, которую я набираю после того, как я закрыл файл, и на этом ключе он откроет следующий для меня для редактирования.Блокировка до закрытия файла в python

Есть ли способ получить Python, чтобы открыть следующий документ, как только предыдущий будет закрыт (чтобы пропустить, если python ждет нажатия клавиши). ... Я буду повторять эту задачу примерно 100 000 раз, и, таким образом, каждая часть секунды щелчка поднимается очень быстро. Я в основном хочу избавиться от необходимости взаимодействовать с python и просто получить следующий txt-файл автоматически, как только предыдущий будет закрыт.

Я не мог понять, как это сделать, но думал о строках ожидания до тех пор, пока не будет закрыт предыдущий файл (не был уверен, есть ли способ, чтобы python мог определить, есть ли файл открыто/закрыто).

Для справки, я использую python2.7 и Windows.

+0

Это очень специфичный для приложения. В большинстве случаев вы можете ждать, пока процесс не умрет. – simonzack

+1

Вы можете проверить измененное время файлов: http://stackoverflow.com/a/237084/3651800 –

+1

Вы вручную редактируете 100 000 файлов? Хлоп. –

ответ

3

Используйте модуль подпроцесс-х Popen Constructor, чтобы открыть файл. Он вернет объект с помощью метода wait(), который будет блокироваться до закрытия файла.

0

Как о чем-то вроде:

for fname in list_of_files: 
    with open(fname, mode) as f: 
     # do stuff 
+1

Думаю, он действительно просит, как заблокировать, пока он не закрыл файл в блоке '# do stuff'. –

0

В случае заинтересованности, следующий код с помощью модифицированного метода времени работал:

os.startfile(text_file_name)   
    modified = time.ctime(os.path.getmtime(text_file_name)) 
created = time.ctime(os.path.getctime(text_file_name)) 

    while modified == created: 
    sleep(0.5)  
modified = time.ctime(os.path.getmtime(text_file_name)) 
    print modified 

    print "moving on to next item" 
    sleep(0.5) 
sys.stdout.flush() 

Athough Я думаю, что я буду использовать Popen конструктор в будущем, так как это кажется гораздо более элегантный способ сделать (и также разрешает ситуации, когда файл закрыт без необходимости редактирования).

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