Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.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
在Python3中运行的bash命令中传递自定义日期/时间_Python_Shell - Fatal编程技术网

在Python3中运行的bash命令中传递自定义日期/时间

在Python3中运行的bash命令中传递自定义日期/时间,python,shell,Python,Shell,我正在尝试运行一个python程序/包,其中包含py3中的一些自定义bash命令。纯python代码的其余部分正常工作,但是这个bash命令在获取输出文件时给了我很多麻烦。目前,我在Python3(py文件)中使用此命令 但在输出目录中,我必须获得名称如下的文件 biden_2021-01-03.txt and trump_2021-01-03.txt 必须包括今天的日期。当我试图通过修复文件名来执行此操作时,它会执行python程序/包所需的操作,但当我试图根据日期文件操作对其进行自定义时,

我正在尝试运行一个python程序/包,其中包含py3中的一些自定义bash命令。纯python代码的其余部分正常工作,但是这个bash命令在获取输出文件时给了我很多麻烦。目前,我在Python3(py文件)中使用此命令

但在输出目录中,我必须获得名称如下的文件

biden_2021-01-03.txt and trump_2021-01-03.txt
必须包括今天的日期。当我试图通过修复文件名来执行此操作时,它会执行python程序/包所需的操作,但当我试图根据日期文件操作对其进行自定义时,它只会给我具有名称的文件:

biden_.txt and trump_.txt

但是里面没有日期。有人能告诉我哪里做错了,或者有什么更简单的解决方法来实现这一点吗?我在/使用Python 3.5.3、Debian GNU/Linux 9操作系统、内核:Linux 4.9.0-9-amd64、体系结构:x86-64运行此程序。

如果这只是文件名,您可以通过
datetime
模块实现

>>> from datetime import datetime
>>> today_date = datetime.today().strftime('%Y-%m-%d')
>>> cmd = f"-d biden_{today_date}.txt --function=linear -f trump_{today_date}.txt"
>>> cmd
'-d biden_2021-01-03.txt --function=linear -f trump_2021-01-03.txt'

os.system
为每个调用创建一个新的子shell,因此
now
env变量在后续调用中不可用

您可以直接在Python中生成日期字符串,并将其作为格式字符串传递:

now = datetime.datetime.now().date().isoformat()
os.system("-d biden_{now}.txt --function=linear -f trump_{now}.txt".format(now=now))
os.system("-i trump_{now}.txt --daemon --quiet --port 8022".format(now=now))
或者您可以将
now
变量放入Python环境中,并在
os.system
调用中引用它:

os.environ['now'] = datetime.datetime.now().date().isoformat()
os.system("-d biden_${now}.txt --function=linear -f trump_${now}.txt")
os.system("-i trump_${now}.txt --daemon --quiet --port 8022")

系统调用正在新shell中生成。见样品

样本1:

os.system("now=$(date +%Y-%m-%d)")
os.system("echo $now")

样本2:

os.system("now=$(date +%Y-%m-%d); echo $now")
2021-01-03
你可以组合成这样的东西

os.system("echo \"Your file name is biden`date +%Y-%m-%d`.txt\"")
Your file name is biden2021-01-03.txt
但是你的时间会慢慢地改变,这取决于你的处理需要多长时间


如果您不希望时间漂移,而是希望与开始时间相匹配,请使用python date,因为在此期间通过

此解决方案在保存文件方面效果很好。但是当我在单个bash命令中同时使用第二个自定义变量(比如{port_number}和{today_date})运行它时,它就不起作用了。如果我只考虑这里的日期,它与时间有什么联系?处理过程最多不会超过30到40分钟。如果不考虑时间,是否有任何影响?这两种解决方案都非常适合我。例如,我在这里使用第二个解决方案,然后如何包含第二个自定义变量。我尝试了两个变量,比如--#os.environ['now']=datetime.datetime.now().date().isoformat(),对于下一个命令,端口号8022现在是一个变量,所以我添加了一个函数,它每次都给我一个新的端口号。。。假设from#os.environ['newport']=addr[1],然后我尝试执行#os.system(“-I trump${now}.txt--daemon--quiet--port${newport}”),但它抛出了错误。
os.system("echo \"Your file name is biden`date +%Y-%m-%d`.txt\"")
Your file name is biden2021-01-03.txt