今天我写了一个 Python 脚本来处理数据并以自定义格式打印它们。它在交互式 Python 下按预期工作。然后我继续尝试在终端中将输出重定向到文本文件,并遇到了一些意想不到的事情。
我尝试的特定示例是按列排列数据列表,并以 LaTeX 表格格式打印它们。它或多或少像:
foo(mylist, sep_col='\t', sep_row=r'\\ \hline')
当我尝试在终端中运行脚本时,我这样做了:
$ python -c "from foo import foo; foo(mylist, col_sep=' & ', row_sep=r' \\ \hline')" > results.txt
但结果\\ \hline
显示部分显示为\ \hline
,与交互式 Python 下不一样。
当我更多地研究问题(或者可能是背后的原理)时,我发现 Python 脚本的行为由$ python -c
在交互式 Python 下处理的 Python 脚本的行为是不一样的。
在交互式 Python 下:>>> print r'\\'
给出\\
但是,在终端中,$ python -c "print r'\\'"
引发了SyntaxError
:
File "<string>", line 1
print r'\'
^
SyntaxError: EOL while scanning string literal
当反斜杠的数量为 3 或 4 时,终端似乎给出\\
。数字 5 或 6 会引发错误。7个反斜杠 give ,表示在这种环境下\\\\
没有办法给。\\\
这个问题我找了好久,好像很少有人讨论$ python -c
。如果我复制了,请提前道歉。