直接在命令行上编写python脚本
当使用bashshell命令时,有时可以使用python编写一个简短的程序,然后将其导入其他程序。我找不到很多关于编写像这样的python程序的文档,尽管看起来“-c”选项是可以使用的选项。但是当编写最简单的python程序时,编译器或者我应该说解释器都会抱怨。见下例:直接在命令行上编写python脚本,python,linux,shell,command-line,Python,Linux,Shell,Command Line,当使用bashshell命令时,有时可以使用python编写一个简短的程序,然后将其导入其他程序。我找不到很多关于编写像这样的python程序的文档,尽管看起来“-c”选项是可以使用的选项。但是当编写最简单的python程序时,编译器或者我应该说解释器都会抱怨。见下例: $ python -c " import os if os.path.isfile("test"): print "test is a file" else: print "test is not a file
$ python -c "
import os
if os.path.isfile("test"):
print "test is a file"
else:
print "test is not a file"
"
当输入“最后一个”时,解释程序会抱怨。如果我把它放在一个文件中,这运行正常,但是如果我在命令行中这样键入它,我会出错
$ python -c "
import os
if os.path.isfile("test"):
print "test is a file"
else:
print "test is not a file"
"
Traceback (most recent call last):
File "<string>", line 4, in <module>
NameError: name 'test' is not defined
$python-c”
导入操作系统
如果os.path.isfile(“测试”):
打印“测试是一个文件”
其他:
打印“测试不是文件”
"
回溯(最近一次呼叫最后一次):
文件“”,第4行,在
NameError:未定义名称“test”
我不知道翻译员为什么在这里抱怨。有人知道为什么这不起作用吗
我真正想要的是这样的东西:
$ cat somefile | python -c "
import re
check = re.search(pattern, <file input>)
"
$cat somefile | python-c”
进口稀土
检查=重新搜索(模式,)
"
在这种情况下,我不知道如何访问cat的输出,所以我只是照本宣科地写了出来。您在双引号中使用了双引号,这将结束您传递给python的带引号的字符串,在一个您不希望出现的地方。尝试用单引号替换外部引号,就像我在这里做的那样:
python -c '
import os
if os.path.isfile("test"):
print "test is a file"
else:
print "test is not a file"
'
如果使用单引号来终止传递给python的字符串,请确保在代码中仅使用双引号。此外,如果可以保证Bash作为shell的可用性,则可以通过以下方式获得额外的精彩分数:
$python EOF
我可以把python代码放在这里
您正在双引号内使用双引号,这将结束传递给python的带引号字符串,这是您不希望看到的。请尝试用单引号替换外部引号,就像我在这里做的那样:
python -c '
import os
if os.path.isfile("test"):
print "test is a file"
else:
print "test is not a file"
'
如果使用单引号来终止传递给python的字符串,请确保在代码中仅使用双引号。此外,如果可以保证Bash作为shell的可用性,则可以通过以下方式获得额外的精彩分数:
$python EOF
我可以把python代码放在这里
可以用单引号括住你的短程序,或者,如果你想用双引号括住它,用\
转义引号
示例:
1.转义引号
$python-c”
打印“你好”
对于(1,2,3)中的i:
打印i
"
输出:
你好
1.
2.
3.
2.带单引号
$python-c'
打印“你好”
对于(1,2,3)中的i:
打印i
'
当然,如果使用单引号括起程序,并且希望在python代码中使用单引号,则必须使用\
;-)对其进行转义
输出是相同的。使用单引号括住您的短程序,或者,如果要使用双引号括住它,请使用
\
转义引号
示例:
1.转义引号
$python-c”
打印“你好”
对于(1,2,3)中的i:
打印i
"
输出:
你好
1.
2.
3.
2.带单引号
$python-c'
打印“你好”
对于(1,2,3)中的i:
打印i
'
当然,如果使用单引号括起程序,并且希望在python代码中使用单引号,则必须使用\
;-)对其进行转义
输出是相同的。另一种解决方案是转义内部双引号,以便bash不会解析它们。如下所示:
$ python -c "
import os
if os.path.isfile(\"test\"):
print \"test is a file\"
else:
print \"test is not a file\"
"
另一种解决方案是转义内部双引号,以便bash不会解析它们。如下所示:
$ python -c "
import os
if os.path.isfile(\"test\"):
print \"test is a file\"
else:
print \"test is not a file\"
"
您可以使用通常称为“”(如“使用此处的文档”)。这避免了使用
python-c“…
或python-c”…”时出现的所有引用问题。
例如:
#!/bin/sh
python <<EOF
print "hello"
for i in (1,2,3):
print i
EOF
!/bin/sh
python您可以使用通常称为“”(如“使用此处的文档”)。这避免了在使用python-c“…”
或python-c“…”
例如:
#!/bin/sh
python <<EOF
print "hello"
for i in (1,2,3):
print i
EOF
!/bin/sh
python,在执行此操作时,请记住在脚本中的字符串周围仅使用双引号(“
),而不是单引号(”
)。单引号将突然结束脚本,并离开shell以尝试解释其余部分。或者使用“是的,转义将起作用,这会让我感到难过,因为当时的可读性不高。执行此操作时,请记住在脚本中的字符串周围仅使用双引号(”
),而不是单引号(”
)。单引号将突然结束脚本,并离开shell以尝试解释其余部分。或者使用“是的,转义将起作用”,使我感到难过,因为当时的内容不那么可读。