簡體   English   中英

Python子shell和Linux shell如何產生不同的結果?

[英]How do Python subshell and Linux shell produce different results?

我有一個文件夾,其子文件夾包含.pp Puppet 清單文件。 我發現我可以使用puppet strings工具將.pp文件轉換為 json。

這可以使用 Unix 終端輕松實現,運行命令puppet strings generate --format json file_name.pp

我編寫了一個簡單的 python 腳本來遍歷特定目錄及其子目錄中的所有文件,並對每個文件運行此命令。

可悲的是,在運行腳本時,我只得到了沒有任何內容的空木偶字符串模板(我實現了打印出被調用的命令),但是在 Unix 終端中使用這些命令效果很好。

拜托,我做錯了什么,命令在 Unix shell 中工作,但不在 Python 的子shell 中?

這是代碼:

import os


def generate_json():
    for dirpath, dirnames, filenames in os.walk(
            '/home/odolezal/PycharmProjects/puppet_parser/files/'):
        for filename in [f for f in filenames if f.endswith(".pp")]:
            print(os.path.join(dirpath, filename))
            print('puppet strings generate --format json ' + filename)
            os.system('puppet strings generate --format json ' + str(filename))

if __name__ == "__main__":
    generate_json()

我找到了答案 - 將最后一個函數行更改為os.system('puppet strings generate --format json ' + os.path.join(dirpath, filename))非常有效,因為我忘記了腳本不會更改當前目錄時對子目錄和其中的文件進行操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM