Beim Ersetzen eines mit einem Shell-Skript geschriebenen Programms durch Python mussten einige Shell-Befehle von Python aufgerufen werden, aber es scheint, dass Shell-Aufrufe für jedes Betriebssystem unterschiedliche Zeichenbeschränkungen haben, daher habe ich dies untersucht.
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) #Fügen Sie Echo, Komma und Leerzeichen hinzu
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) #Fügen Sie Echo, Komma und Leerzeichen hinzu
OSX sierra (Python3.6.1) Python3 wird von https://www.python.org/ heruntergeladen.
Befehl | os.system | subprocess.run |
---|---|---|
Maximale Anzahl von Zeichen | 260554 Zeichen | 260549 Zeichen |
Windows7 (Python3.6.1) Python3 wird von https://www.python.org/ heruntergeladen.
Befehl | os.system | subprocess.run |
---|---|---|
Maximale Anzahl von Zeichen | 8160 Zeichen | 32733 Zeichen |
Ubuntu16.04 (Python3.5.2) Python 3 befindet sich im Standard-Repository
Befehl | os.system | subprocess.run |
---|---|---|
Maximale Anzahl von Zeichen | 131071 Zeichen | 131071 Zeichen |
CentOS7 (Python3.6.1) Python3 wurde aus dem IUS-Community-Repository installiert
Befehl | os.system | subprocess.run |
---|---|---|
Maximale Anzahl von Zeichen | 131071 Zeichen | 131071 Zeichen |
Ich habe auch das Muster von shell = False überprüft, aber ich hatte Angst, dass ich es gut untersuchen könnte, deshalb habe ich es oben nicht beschrieben. Ich habe eine Umfrage durchgeführt, um das erste Argument mit Zeichen zu füllen