Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
直接在命令行上编写python脚本_Python_Linux_Shell_Command Line - Fatal编程技术网

直接在命令行上编写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

当使用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"
"
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以尝试解释其余部分。或者使用“是的,转义将起作用”,使我感到难过,因为当时的内容不那么可读。