我有一个Python脚本,可以读取文本csv文件并创建播放列表文件。但是我一次只能做一个,比如:
python playlist.py foo.csv foolist.txt
但是,我有一个文件目录需要制作成播放列表,名称不同,有时还有不同数量的文件。
到目前为止,我已经看过创建一个txt文件,其中列出了目录中文件的所有名称,然后遍历每一行,但我知道必须有一种更简单的方法。
答案 0 :(得分:8)
for f in *.csv; do
python playlist.py "$f" "${f%.csv}list.txt"
done
这会诀窍吗?这将把foo.csv放在foolist.txt和abc.csv中的abclist.txt中。
或者您是否希望它们都在同一个文件中?
答案 1 :(得分:4)
只需使用asterisk glob的for循环,确保为文件名中的空格引用适当的东西
for file in *.csv; do
python playlist.py "$file" >> outputfile.txt;
done
答案 2 :(得分:3)
是单个目录还是嵌套?
实施例
topfile.csv
topdir
--dir1
--file1.csv
--file2.txt
--dir2
--file3.csv
--file4.csv
对于嵌套,您可以使用os.walk(topdir)
以递归方式获取目录中的所有文件和目录。
您可以将脚本设置为接受目录或文件:
python playlist.py topfile.csv topdir
import sys
import os
def main():
files_toprocess = set()
paths = sys.argv[1:]
for p in paths:
if os.path.isfile(p) and p.endswith('.csv'):
files_toprocess.add(p)
elif os.path.isdir(p):
for root, dirs, files in os.walk(p):
files_toprocess.update([os.path.join(root, f)
for f in files if f.endswith('.csv')])
答案 3 :(得分:2)