我需要date | grep -o -w '"+tz+"'' | wc -w在我的localhost上使用Python 运行命令 .我正在使用subprocess相同的模块,并使用check_output我需要捕获输出相同的方法.
但是它给我一个错误:
Traceback (most recent call last):
File "test.py", line 47, in <module>
check_timezone()
File "test.py", line 40, in check_timezone
count = subprocess.check_output(command)
File "/usr/lib/python2.7/subprocess.py", line 537, in check_output
process = Popen(stdout=PIPE, *popenargs, **kwargs)
File "/usr/lib/python2.7/subprocess.py", line 679, in __init__
errread, errwrite)
File "/usr/lib/python2.7/subprocess.py", line 1249, in _execute_child
raise child_exception-
OSError: [Errno 2] No such file or directory
Run Code Online (Sandbox Code Playgroud)
请帮助我哪里出错了.我是python的新手
我一直试图了解一段时间,现在subprocess.call和之间的区别是什么subprocess.run.我知道最后一个是Python 3.5上的新内容,两者都基于subprocess.Popen,但我还不能理解其中的差异.
我试图在bash脚本中运行Python和bash命令.在bash脚本中,我想执行Python循环包含的一些bash命令:
#!/bin/bash
python << END
for i in range(1000):
#execute? some bash command such as echoing i
END
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
我正在使用子进程模块中的Popen函数来执行命令行工具:
subprocess.Popen(args, bufsize=0, executable=None, stdin=None, stdout=None, stderr=None, preexec_fn=None, close_fds=False, shell=False, cwd=None, env=None, universal_newlines=False, startupinfo=None, creationflags=0)
Run Code Online (Sandbox Code Playgroud)
我正在使用的工具会获取一个然后处理的文件列表.在某些情况下,此文件列表可能会很长.有没有办法找到args参数的最大长度?有大量文件传递给该工具,我收到以下错误:
Traceback (most recent call last):
File "dump_output_sopuids.py", line 68, in <module>
uid_map = create_sopuid_to_path_dict_dcmdump(dicom_files)
File "dump_output_sopuids.py", line 41, in create_sopuid_to_path_dict_dcmdump
dcmdump_output = subprocess.Popen(cmd,stdout=subprocess.PIPE).communicate(0)[0]
File "c:\python26\lib\subprocess.py", line 621, in __init__
errread, errwrite)
File "c:\python26\lib\subprocess.py", line 830, in _execute_child
startupinfo)
WindowsError: [Error 206] The filename or extension is too long
Run Code Online (Sandbox Code Playgroud)
有没有找到这个最大长度的一般方法?我在msdn上发现了以下文章:命令提示符(Cmd.exe)命令行字符串限制但我不想在值中硬编码.我宁愿在运行时获取值以将命令分解为多个调用.
我在Windows XP 64上使用Python 2.6.
编辑:添加代码示例
paths = ['file1.dat','file2.dat',...,'fileX.dat']
cmd = ['process_file.exe','+p'] …Run Code Online (Sandbox Code Playgroud) 我目前正在手动执行bash命令,方法是在python代码中输入shell.
如何用pythonic方式做到这一点?
我目前正在使用os.system函数执行命令,如;
os.system('sudo add-apt-repository ppa:ondrej/php')
os.system('sudo apt-get update')
os.system('sudo apt-get install php7.0 php5.6 php5.6-mysql php-gettext php5.6-mbstring php-mbstring php7.0-mbstring php-xdebug libapache2-mod-php5.6 libapache2-mod-php7.0')
os.system('sudo a2dismod php7.0 ; sudo a2enmod php5.6 ; sudo service apache2 restart')
Run Code Online (Sandbox Code Playgroud) 我试图在ruffus管道中使用Sailfish,它将多个fastq文件作为参数.我在python中使用子进程模块执行Sailfish,但是<()在子进程中调用即使在我设置时也不起作用shell=True.
这是我想用python执行的命令:
sailfish quant [options] -1 <(cat sample1a.fastq sample1b.fastq) -2 <(cat sample2a.fastq sample2b.fastq) -o [output_file]
Run Code Online (Sandbox Code Playgroud)
或(最好):
sailfish quant [options] -1 <(gunzip sample1a.fastq.gz sample1b.fastq.gz) -2 <(gunzip sample2a.fastq.gz sample2b.fastq.gz) -o [output_file]
Run Code Online (Sandbox Code Playgroud)
概括:
someprogram <(someprocess) <(someprocess)
Run Code Online (Sandbox Code Playgroud)
我将如何在python中执行此操作?子流程是正确的方法吗?
这个问题最近出现了,之前健康的容器现在在创建 shutdown 会话时进入睡眠循环。该问题仅发生在 Cloud Run 上,而不是本地。
最小可重现代码:
requirements.txt
Flask==2.0.1
gunicorn==20.1.0
shutit
Run Code Online (Sandbox Code Playgroud)
Dockerfile
FROM python:3.9
# Allow statements and log messages to immediately appear in the Cloud Run logs
ENV PYTHONUNBUFFERED True
COPY requirements.txt ./
RUN pip install -r requirements.txt
# Copy local code to the container image.
ENV APP_HOME /myapp
WORKDIR $APP_HOME
COPY . ./
CMD exec gunicorn \
--bind :$PORT \
--worker-class "sync" \
--workers 1 \
--threads 1 \
--timeout 0 \
main:app
Run Code Online (Sandbox Code Playgroud)
main.py
Flask==2.0.1
gunicorn==20.1.0
shutit
Run Code Online (Sandbox Code Playgroud)
cloudbuild.yaml …
cairosvg 的命令行版本允许缩放。这是帮助函数的输出:
cairosvg -h
usage: cairosvg [-h] [-v] [-f {pdf,png,ps,svg}] [-d DPI] [-W WIDTH]
[-H HEIGHT] [-s SCALE] [-u] [-o OUTPUT]
input
CairoSVG - A simple SVG converter based on Cairo.
positional arguments:
input input filename or URL
optional arguments:
-h, --help show this help message and exit
-v, --version show program\'s version number and exit
-f {pdf,png,ps,svg}, --format {pdf,png,ps,svg}
output format
-d DPI, --dpi DPI ratio between 1 inch and 1 pixel
-W WIDTH, --width WIDTH
width of the …Run Code Online (Sandbox Code Playgroud) 我已经创建并部署了一个带有 Apache2 服务器 WSGI 的 Flask 应用程序,现在想要从应用程序运行 .sh 脚本。但是,从 python 代码调用,它不会执行。
这是 test.sh:
#!/bin/bash
echo "hi from shell script"
Run Code Online (Sandbox Code Playgroud)
这是我的 python flask 应用程序代码 index.py(在打开应用程序时运行)但没有打印或执行任何内容:
import subprocess
subprocess.call('/var/www/FlaskApp/FlaskApp/scripts/test.sh')
Run Code Online (Sandbox Code Playgroud)
为了检查我的代码中没有错误,我检查了烧瓶错误日志,没有错误。此外,我创建了一个名为 test_shell_script.py 的脚本,使用与上面相同的 python 代码(但不是flask应用程序代码),它运行得很好,如下所示:
# test_shell_script.py
import subprocess
subprocess.call('/var/www/FlaskApp/FlaskApp/scripts/test.sh')
Run Code Online (Sandbox Code Playgroud)
然后用 python 运行它: python3 /var/www/FlaskApp/FlaskApp/test_shell_script.py
hi from shell script
Run Code Online (Sandbox Code Playgroud)
我也确实更改了权限:
-rwxr-xr-x 1 root root 364 Nov 19 17:48 ../scripts/test.sh
Run Code Online (Sandbox Code Playgroud)
我在这里缺少什么不允许我的 Flask 应用程序从 python 代码运行 shell 命令?
python ×10
subprocess ×4
bash ×3
shell ×3
flask ×2
pipe ×2
cairo ×1
dataframe ×1
docker ×1
libreoffice ×1
named-pipes ×1
opendocument ×1
pandas ×1
png ×1
popen ×1
svg ×1