python glob & sys.argv 错误,正则表达式不工作

python glob & sys.argv error, and regex not working

我在使用 glob、sys、re 和 os 模块的脚本中遇到了两个问题。该脚本枚举一个目录并在所有文件中搜索一个字符串。如果我将绝对路径分配给变量但不执行正则表达式,它就会运行。我需要更改脚本以使用 sys.argv,以便用户可以在终端中指定路径(例如:./replace_students.py /home/alex/Documents/)。当我将 dirname 变量从 "dirname = "/home/alex/Documents/"" 更改为 "dirname = sys.argv[1:]" 时,出现错误

"TypeError: coercing to Unicode: need string or buffer, list found".

我需要有关错误和让正则表达式正常工作的帮助。

import os, glob, sys, re

#dirname = "/home/alex/Documents"
dirname = sys.argv[1:]
os.listdir(dirname)

for filename in glob.glob('*'):
    with open(filename) as f:
        contents = f.read()

    if 'students' in contents:
        contents = contents.replace(r" students", "pupils")
    print contents

[1:] 意味着你想要从第二个到最后一个的所有项目,实际上你得到的不是一个字符串,而是一个列表(是的,它是一个列表,即使它包含一个项目)。
os.listdir 需要单一路径,而不是列表

改为:

dirname = sys.argv[1]