L'obligation d'utiliser des devis pour les processus externes est un cas qui se retrouve fréquemment dans les doublons. Une solution de contournement consiste à ne pas utiliser de shell, ce qui supprime l'exigence d'un niveau de cotation.
os.system("""awk '/foo/ { print "bar" }' %""" % filename)
peut être utilement remplacé par
subprocess.call(['awk', '/foo/ { print "bar" }', filename])
(qui corrige également le bogue qui fait que les métacaractères de l'interpréteur de commandes dans filename
devrait être échappé du shell, ce que le code original n'a pas réussi à faire ; mais sans shell, ce n'est pas nécessaire).
Bien sûr, dans la grande majorité des cas, vous ne voulez ou n'avez pas du tout besoin d'un processus externe.
with open(filename) as fh:
for line in fh:
if 'foo' in line:
print("bar")