将字符串转换为文字目录

converting strings to literal directories

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

您必须将 file_path 括在大括号中以将其标记为 Python 表达式。尝试将此作为脚本的最后一行:

!cat {file_path} | sed -e '1,/BEGIN/d'>temp.txt

依我拙见,您忘记在 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