【发布时间】:2016-04-05 06:29:12
【问题描述】:
使用 iPython,我试图遍历目录中的所有文本文件,对每个文本文件执行一些操作(在以“BEGIN”开头的行之后裁剪一部分文本文件),然后将结果保存到另一个临时文件.txt。但是,当我执行!cat file_path 时,它不会将file_path 作为目录,而是将其解释为名为@987654323@ 的字符串。无论如何,我可以将字符串 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
【问题讨论】:
-
据我所知,您不能只插入
!cat来转义并执行shell 命令。你必须使用subprocess.Popen或类似的东西。为什么不直接使用 python 进行裁剪,或者全部在 shell 中完成,而不是尝试以这种方式混合它们? (这也有“无用的 cat”)这是 IPython,这就是!起作用的原因吗?你可能不想要/Documents但我猜是~/Documents? -
我发现这种混合方式更干净。但是,是的,仅在 Python/Unix 中就可以做到这一点。是的,这是 iPython,可以在任何时候使用 !字符,正确的目录是 ~/Documents。
-
可以加标签
IPython