Если я использую filename = argv[n]
из командной строки Windows, приведенная ниже функция extract()
работает нормально.Если вместо этого я использую список имен файлов из list(dir)
, который использует встроенную функцию os.listdir()
для извлечения имен файлов из рабочего каталога, то функция extract()
завершается ошибкой.
Файл ввода.read () распознает имя файла как допустимое значение, но оно, похоже, завершается ошибкой при date = list(date_match[0]
) с 'TypeError: приведение к Unicode: нужна строка или буфер, найден кортеж'.Значения выходного списка .listdir - это не обычные строки, а что-то другое.Есть идеи?
import sys
import re
import os
def extract(filename):
input_file = open(filename, 'r')
data = input_file.read() #read file line by line
#make list of time and date
date_match = re.findall(r'(\d+:\d+)\t(\d+/\d+/\d+)', data) #find file date and time
date = list(date_match[0])
#extract date tuple from list above
return date
def list(dir):
directoryfiles = os.listdir(dir)
diroutput = []
for member in directoryfiles:
if member != sys.argv[0]:
diroutput.append(member)
return diroutput
def main():
inputfiles = list(sys.argv[1])
for filename in inputfiles:
date = extract(filename)
if __name__ == '__main__':
main()