2017-08-04 64 views
1

我遇到了使用glob,sys,re和os模塊的腳本有兩個問題。該腳本枚舉一個目錄並搜索所有文件中的字符串。它運行時,如果我將絕對路徑分配給變量,但不執行正則表達式。我需要將腳本更改爲使用sys.argv,以便用戶可以在終端中指定路徑(例如:./replace_students.py /home/alex/Documents/)。當我改變了目錄名稱變量從"dirname = "/home/alex/Documents/"""dirname = sys.argv[1:]"我得到的錯誤python glob&sys.argv錯誤,並且正則表達式不工作

​​3210

我需要與錯誤的援助和獲得正則表達式的工作。

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 

回答

0

[1:]意味着要從第二的所有項目,直到最後,有效的,而不是讓一個字符串,你會得到一個列表(是的,它即使它包含一個項目的列表)。
os.listdir需要一個單一的路徑,而不是一個列表

,而不是做:

dirname = sys.argv[1] 
+0

你的解釋是可以理解的和有益的。我做了修改並且工作。謝謝! – jmal