运行Subprocess W / Variable As Command&捕获输出

时间:2015-06-05 18:44:18

标签: python bash subprocess

我用Google搜索并用Google搜索,但找不到任何可行的内容。我需要在文件名中抓取日期,将其转换为julian日期,然后重命名原始文件,使其包含julian日期。

for file in os.listdir("/home/mydir/"):  
    if file.startswith("awesome"):  
        awesome_file = file.split(' ')  
        awesome_date = awesome_file[2]  
        awesome_year = awesome_date.split()  
        awesome_year = awesome_date[0] + awesome_date[1] + awesome_date[2] + awesome_date[3]  
        awesome_month = awesome_date[4] + awesome_date [5]  
        awesome_day = awesome_date[6] + awesome_date[7]  
        date_command = "date -d " + awesome_month + "/" + awesome_day + "/" + awesome_year + " +%Y%j"  
        print(date_command)  
        julian_date = subprocess.Popen(date_command)  
        print(julian_date)

我知道问题出在subprocess.Popen行中,但正如您所看到的,我必须将实际的bash命令作为变量运行,因为对于/ home / mydir中找到的每个文件,命令可能会有所不同/我无法弄清楚拯救生命的正确语法。另外,就像提醒一样,我还需要捕获subprocess.Popen的输出,因为我需要STDOUT来重命名原始的awesome_file。

1 个答案:

答案 0 :(得分:-1)

使用Python中已有的工具,而不是调用外部程序。

from datetime import datetime
d = datetime(int(awesome_year), int(awesome_month), int(awesome_day))
print "{0.tm_year}{0.tm_yday}".format(d.timetuple())