Lors du remplacement d'un programme écrit par un script shell par Python, il était nécessaire d'appeler certaines commandes shell depuis Python, mais il semble que les appels shell ont des limites de caractères différentes pour chaque système d'exploitation, j'ai donc étudié.
os.system()
import os
i = 100000000
n = 0
while True:
n += i
arg = 'b' * n
command = 'echo "{arg}"'.format(arg=arg)
result = os.system(command)
if result != 0:
if i == 1:
break
n -= i
i //= 10
print("LENGTH: ", n -1 + 7) #Ajouter un écho, une virgule et un espace
subprocess.run(shell=True)
import subprocess
i = 100000000
n = 0
while True:
try:
n += i
arg = 'b' * n
command = 'echo "{arg}"'.format(arg=arg)
subprocess.run(command,shell=True)
except OSError:
if i == 1:
break
n -= i
i //= 10
print("LENGTH: ", n -1 + 7) #Ajouter un écho, une virgule et un espace
OSX sierra (Python3.6.1) Python3 est téléchargé sur https://www.python.org/
commander | os.system | subprocess.run |
---|---|---|
Nombre maximum de caractères | 260554 caractères | 260549 caractères |
Windows7 (Python3.6.1) Python3 est téléchargé sur https://www.python.org/
commander | os.system | subprocess.run |
---|---|---|
Nombre maximum de caractères | 8160 caractères | 32733 caractères |
Ubuntu16.04 (Python3.5.2) Python 3 est dans le référentiel standard
commander | os.system | subprocess.run |
---|---|---|
Nombre maximum de caractères | 131071 caractères | 131071 caractères |
CentOS7 (Python3.6.1) Python3 installé à partir du référentiel de la communauté IUS
commander | os.system | subprocess.run |
---|---|---|
Nombre maximum de caractères | 131071 caractères | 131071 caractères |
J'ai également vérifié le motif shell = False, mais je craignais qu'il puisse être étudié avec succès, je ne l'ai donc pas répertorié ci-dessus. Un endroit où j'ai mené une enquête pour remplir le premier argument avec des personnages
Recommended Posts