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

2024-09-30 01:26:52 发布

您现在位置:Python中文网/ 问答频道 /正文

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

import os
os.system("now=$(date +%Y-%m-%d)")
os.system("-d biden_${now}.txt --function=linear -f trump_${now}.txt")
os.system("-i trump_${now}.txt --daemon --quiet --port 8022")

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

biden_2021-01-03.txt and trump_2021-01-03.txt

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

biden_.txt and trump_.txt

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


Tags: and文件代码命令程序txt名称bash
3条回答

如果这只是针对文件名,那么可以通过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'

系统调用正在新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作为postedby abc

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

您可以直接在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")

相关问题 更多 >

    热门问题