将文件名插入csv文件的最后一列。
问题描述:
我想将CSV文件的文件名插入CSV文件的最后一列。将文件名插入csv文件的最后一列。
我发现一个成功的Windows批处理文件,但我正在寻找一个Linux bash脚本。
我已经封闭了窗户批处理文件:
@echo off
setLocal EnableDelayedExpansion
for /f "tokens=* delims= " %%c in ('dir/b/a-d *.csv') do (
set FN=%%~Nc
set /a N=0
for /f "tokens=* delims= " %%a in (%%c) do (
set /a N+=1
if !N! equ 1 (
echo %%a, id > !FN!.csv
) else (
echo %%a, !FN! >> !FN!.csv
)
)
)
期待解决这一个。
亨利
答
简单。
import sys
import glob
for filename in glob.glob(sys.argv[1]):
file = open(filename)
data = [line.rstrip() + "," + filename for line in file]
file.close()
file = open(filename, "w")
file.write("\n".join(data))
file.close()
另存为“csvadd.py”。然后,该命令将文件名添加到最后一列(ofcourse替换test.csv):
python csvadd.py test.csv
编辑
改变了代码,现在应该一切工作的OS支持(支持通配符等)。它现在也会直接将更改回写到文件中。 小心使用
答
带(GNU)用sed:
for file in *.csv; do
sed -i "s/$/,$file/" "$file"
done
与POSIX sed的:
for file in *.csv; do
if sed "s/$/,$file/" "$file" > /tmp/"${file}".tmp; then
mv /tmp/"${file}.tmp" "$file"
fi
done
谢谢。我可以使用通配符吗?糟糕!在行的最后一列。再次测试 – 2011-01-21 05:33:26
。我使用了命令“python csvadd.py test.csv
2011-01-21 05:49:37