我不知道你想達到什麼樣的,但如果你通過一個文件夾中的很多文件要循環,你可以使用linux find
命令。
在您的情況的一個例子是:
cd /path/to/folder/CSV
find . -name *.csv -exec your_python_script.py {} \;
這會發現所有的.csv
文件,並在每一個運行Python腳本。
確保您的文件頂部有#!/bin/env python
並運行sudo chmod +x your_python_script.py
以使其可執行。
如果沒有.csv
擴展,那麼你可以做到以下幾點:
cd /path/to/folder/CSV
find . -exec your_python_script.py {} \;
雖然被警告 - 這將在每個文件在目錄中運行 - CSV或以其他方式。
另外,如果我理解正確的腳本(這只是附加的文件名的最後一列),試試這個:
#!/bin/env python
import sys
import csv
filename=sys.argv[1]
output_filename='new-'+filename
output_rows = []
with open(filename, 'r') as inputfile:
with open(output_filename) as outputfile:
r = csv.reader(inputfile)
w = csv.writer(outputfile, lineterminator='\n')
for input_row in r:
output_row=input_row.append(filename)
output_rows.append(output_row)
w.writerows(output_rows)
保存,作爲test_python_script.py
在CSV
文件夾中。然後運行:
cd /path/to/folder/CSV
chmod +x test_python_script.py
find . -exec test_python_script.py {} \;
問題是什麼? –
我相當肯定你並不是真的只想覆蓋你從glob得到的最後一個文件名,所以你的縮進被打破了。你能解釋一下你實際想要達到的目標嗎? –
我的問題是:如何將保存在fnadder.py中的上述代碼執行到沒有任何擴展名的所有保存在director中的文件。代碼基本上是將文件名添加到CSV文件的lsat列。 Thansk –