49628


python でlinux コマンドを起動させる際の質問が2つあります。  
2つを別々のスレッドで質問します。  
まず1つめ。

subprocess モジュールのsubprocess.check_output()を用いて  
コマンド touch を使用しようとしていますが、オプション"--date= " を使うには  
どのようにすればよいですか?  
"-t"オプションのように"="がいらないタイプなら

[code]

    subprocess.check_output(["touch", "-a", "-t", date1, filename])
    
[/code]

のように、リストを渡すことで実現できますが、"--date="オプションのように、  
"="が必要なタイプのオプションはどのように用いればよいですか?

環境  
OS: CentOS Linux release 7.5.1804 (Core)  
Python: Python 3.6.5


CC BY-SA 4.0
2018-10-23T12:40:03.843
49574
2018-10-26T12:52:52.713
2018-10-26T12:52:52.713
2238
question
python linux python3 centos
python でlinux コマンドを起動 -- subprocessでオプションに "=" が必要な場合


Linuxコマンドを起動するコマンドラインの引数は、空白などで区切られた文字列の配列として各コマンドに渡されます。「--date=tomorrow」のようなコマンド引数は、それで1つの文字列になります。

つまり、こんな感じで指定します。

[code]

    subprocess.check_output(["touch", "-a", "--date=tomorrow", filename])
    
[/code]


CC BY-SA 4.0
2018-10-23T13:12:30.267
49576
2018-10-23T13:12:30.267
4010
49574
answer


日付を指定する文字列をシングルクォートで囲う必要はありません．

[code]

    >>> import subprocess
    >>> subprocess.check_output(["touch", "-m", "--date=2018-10-24 22:00:00", "filename"])
    
    $ ls -al filename 
    -rw-rw-r-- 1 hoge hoge 0 10月 24 22:00 filename
    
[/code]


CC BY-SA 4.0
2018-10-24T22:53:37.113
49628
2018-10-24T22:53:37.113
18582
49574
answer