slice索引必须是整数或None或具有__index__方法

时间:2016-01-02 22:51:26

标签: python subprocess glob

这是我到目前为止的代码:我相信我的问题来自模式匹配。我已经尽力在这里和其他来源找到答案,但到目前为止已经证明是困难的。请帮我。谢谢大家

def newInput(input_dir):
    files = []
    ext = '*[1]\.*txt', '*[2]\.*txt', '*\.csv'
    for ext in ('*\.csv', '*[0-9]\.*txt'):
        files.extend(glob.glob(os.path.join(input_dir, ext)))
        for filenames in files:
            if filenames.endswith('*[1]\.*txt', '*\.csv'):
                subprocess.call([do something using the files])
            elif files.endswith('*[2]\.*txt', '*\.csv'): 
                subprocess.call([do something using the files])
            else:
                print "Specify a correct path to input the files"

if __name__ == '__main__':
    newInput(sys.argv[1])

1 个答案:

答案 0 :(得分:1)

endswith不接受您认为的论据。

  

str.endswith(suffix[, start[, end]])
  如果字符串以指定的后缀结束,则返回True,否则返回False。 后缀也可以是要查找的后缀元组。通过可选的启动,从该位置开始测试。使用可选结束,停止在该位置进行比较。

但是,这段代码错了,因为:

  • files每次迭代都会变长,因此您需要检查两次csv文件
  • list个对象没有endswith成员 - 看起来像拼写错误
  • endswith不接受正则表达式