私はこのコードに気づきました:
os.system("'{0}'".format(path))
そして、誰かがそれを次のように変更したのを見ました:
os.system("\"{0}\"".format(path))
一重引用符から二重引用符に変更すると、どのような利点があるのでしょうか?
ここに私がそれを引き出した元のコミットがあります:
実際にはそれほど多くはありませんが、経験則では、文字通りの割り当てと印刷に一重引用符を使用します。そうすれば、そもそもそこにあるべきではないものを印刷することを避けることができます。
一重引用符はリテラルであり、入力した文字が正確に含まれているため、多くの場合便利です。たとえば、「Hithere/」は実際にHithere /を出力します。
ただし、 「Hi there / n」のようなものが必要な場合は、一重引用符で囲むと文字通り「Hi there / n」になりますが、二重引用符では「Hithere」とブレークラインが必要な結果が得られます。。
Windows では、コマンド ライン引数はシェルや cmd.exe ではなく、プログラム自体によって解析されます。また、ほとんどの Windows プログラムは、通常、二重引用符で囲まれた引用符付きの文字列を解析します。python.exe
同じです。UNIX OS では、コマンド ライン引数はシェルによって解析されます。そして、ほとんどのシェルは一重引用符と二重引用符の両方を解析します。もちろん、二重引用符の展開$
またはシェルが処理できるもの。ただし、パスには含まれません$
。
この変更は、多くの OS で正当に動作できるようにするための回避策です。