将字符串转换为文字目录

时间:2016-04-05 06:29:12

标签: python unix ipython cat

使用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

2 个答案:

答案 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