解析文件名时出现问题os.listdir()为



如果我在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函数,它应该可以正常工作。

最新更新