изменение файла и манипулирование - PullRequest
0 голосов
/ 17 февраля 2012

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

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: нужна строка или буфер, список найден.

1 Ответ

0 голосов
/ 17 февраля 2012

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

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

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

Не забудьте иметь здесь какое-то условие break, если оно вам необходимо, иначе цикл будет работать вечно.

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

Ваша проблема в линии

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...