解压缩文件时解析文件os.listdir()为

时间:2011-07-19 14:17:13

标签: python windows

如果我从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()

1 个答案:

答案 0 :(得分:4)

你重新定义了list!当您尝试date = list(date_match[0])时,您正在调用list函数,而不是内置list函数。重命名列表函数,它应该可以正常工作。

相关问题