代码之家  ›  专栏  ›  技术社区  ›  jmal

python全局系统(&S)。argv错误,正则表达式不工作

  •  1
  • jmal  · 技术社区  · 7 年前

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

    “TypeError:强制为Unicode:需要字符串或缓冲区,找到列表”。

    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 回复  |  直到 7 年前
        1
  •  0
  •   Nullman    7 年前

    [1:]
    os.listdir 需要单个路径,而不是列表

    dirname = sys.argv[1]