如果我在windows命令行中使用filename = argv[n]
,下面的extract()
函数似乎可以正常工作。如果我使用list(dir)
中的文件名列表,它使用os.listdir()
内置函数从工作目录中提取文件名,那么extract()
函数将失败。
input_file.read()将文件名识别为有效值,但它似乎在date = list(date_match[0]
处失败,'TypeError: coercing to Unicode: need string or buffer, tuple found'。
看来os。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()
您已经重新定义了list
!当您尝试执行date = list(date_match[0])
时,您调用的是list
函数,而不是内置的list
函数。重命名list函数,它应该可以正常工作。