2012-02-17 4 views
-1

Как вы сканируете каталог для текстового файла и прочитаете текстовый файл по дате, измените его, распечатайте на экране, чтобы скрипт просматривал каталог каждые 5 секунд для создания нового файла и его печати. Возможно ли, что вы можете мне помочь, я застрял, и мне нужно это очень плохо, и у меня уже есть файл сканирования для печати и печати, но он не печатает файлы по дате modidfied.Модификация и обработка файлов

import os,sys 
os.chdir(raw_input('dir_path: '))  
contents=os.listdir('.') #contents of the current directory 
files =[] 
directory=[] 
Time = time.ctime(os.path.getmtime(contents)) 
for i in contents: 
    if os.path.isfile(i) == True : 
     files.append(i) 
    elif os.path.isdir(i) == True : 
     directory.append(i) 
    #printing contents 
choice = ""  
for j in files: 
    while choice != "quit": 
      choice = raw_input("Dou you want to print file %s (y/n): "%j) 
      if choice == 'y': 
       print "**************************" 
       print "Printing Files %s" %j 
       print "**************************" 
       fileobj = open(j,'r') 
       contents = fileobj.readlines() 
       for k in contents: 
        sys.stderr.write(k) 
       else: 
        pass 

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

+0

Ваш вопрос непонятен. что вы подразумеваете под «читать текстовый файл по дате, измененному»? Вы хотите, чтобы вы печатали все файлы в порядке времени модификации? Или вы хотите только распечатать файлы, которые изменились с момента последнего посещения файла? –

+0

Вы используете linux? Если это так, есть лучший способ контролировать каталог для событий файловой системы: [pyinotify] (http://pyinotify.sourceforge.net/). Аналогичные решения для [OSX] (http://en.wikipedia.org/wiki/FSEvents) и [Windows] (http://stackoverflow.com/questions/3517460/is-there-anything-like-inotify- на окнах/3517475 # 3517475). – unutbu

+1

Пожалуйста, не публикуйте [точные дубликаты вопросов] (http://stackoverflow.com/questions/9332264/file-modification-and-creation). Это крайне невежливо. –

ответ

0

Повторяя действия по таймеру

Вы можете повторить действие, каждые пять секунд, комбинируя бесконечный цикл с функцией time.sleep(), например, так:

import time 
while True: 
    time.sleep(5)   # wait five seconds 
    print (time.time()) # print the time 

Помните, чтобы иметь какой-то break условие здесь, если вам это нужно, иначе цикл будет работать вечно.

"TypeError: принуждать к Unicode: нужно строка или буфер, список найден"

Ваша проблема заключается в линии

Time = time.ctime(os.path.getmtime(contents)) 

Вы предоставили список имен файлов. Функция os.path.getmtime ожидает одно имя файла за один раз. В сообщении об ошибке вам сообщается, что он не знает, как преобразовать список имен файлов в имя файла.

+0

, так как мне нужно читать один файл за раз? – mintgreen

+0

Я имею в виду печать файлов в каталоге по одному измененным временем? – mintgreen

+0

'contents', как указано' os.listdir() ', представляет собой последовательность имен файлов. Размышляйте о том, как вы можете использовать цикл 'for' для прохождения этого элемента последовательности по элементу. –

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