使用iPython,我试图遍历目录中的所有文本文件,对每个文本文件执行一些操作(在以“BEGIN”开头的行之后裁剪文本文件的一部分),然后将结果保存到另一个文本文件中TEMP.TXT。但是,当我执行!cat file_path
时,它不会将file_path
作为目录,而是将其解释为名为'file_path'
的字符串。无论如何我可以将字符串file_path
转换为!cat
可以使用的文字目录吗?
import os
for fn in os.listdir('./dir'):
if fn.endswith('.txt'):
file_path='./dir'+fn
print "file path is:", file_path
!cat file_path | sed -e '1,/BEGIN/d'>temp.txt
输出:
file path is: ~/Documents/dir/doc.txt
cat: file_path: No such file or directory
答案 0 :(得分:0)
您必须将file_path
括在大括号中以将其标记为Python表达式。试试这个作为你脚本的最后一行:
!cat {file_path} | sed -e '1,/BEGIN/d'>temp.txt
答案 1 :(得分:0)
以我的拙见,你忘了添加" /"在file_path变量中:
import os
for fn in os.listdir('./dir'):
if fn.endswith('.txt'):
file_path='./dir/'+fn
print file_path
顺便说一下,你可以使用bash:
for i in `ls ./dir`; do if [[ $i == d*.txt ]]; then cat ./dir/$i | sed -e '1,/BEGIN/d'>temp.txt ; fi; done