files函数提取文件名HTML,提取文件名时解析文件的问题os.listdir()为

如果我从windows命令行使用filename = argv[n],下面的extract()函数似乎工作正常。如果我使用list(dir)中的文件名列表(使用os.listdir()内置函数从工作目录中提取文件名),那么extract()函数将失败。提取文件名时解析文件的问题os.listdir()为

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

更改“列表”功能的名称后再试一次。 'list'是一个内置的python,你不应该重写这个名字。 –

+0

你是什么意思,“它似乎os.listdir输出列表值不是正常的字符串,但别的东西”,你是否尝试打印值,打印那里类型例如'print dir,type(dir)',btw'dir'是一个内置命令,不用它作为变量名 –

+0

如果你只取得第一个结果,也没有理由使用're.findall()'。只需要执行'date_match = re.search(r'(\ d +:\ d +)\ t(\ d +/\ d +/\ d +)',data); date = filelist(date_match.group ())',其中'filelist'是你的'list'函数的一个更正的名字(因为'list'是一个Python内建的,不应该像这样被映射)。 (或者,如果你想在那里使用内建'list',只需重命名你的'list'函数并保持'list'的使用。) –

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值