У меня есть следующий код, где я хочу поместить все папки в определенном каталоге в список для пользователя на выбор. Ниже у меня есть рабочее решение, но я обеспокоен тем, что может быть возможно изменить информацию stdout, и я не хочу, чтобы жесткий список моего списка игнорировал информацию stdin.Python: Как избавиться от строк stdin в stdout
Линия ниже lineList = lineList[6:-3]
- моя забота.
sshCommand = "plink [email protected] PASSWORD"
lsCommand = "ls -1 --color=never -d */\nexit\n"
sshProcess = Popen(sshCommand,shell=False,stdin=PIPE,stdout=PIPE)
sshProcess.stdin.write("cd /mnt/PCAPS/GroupSetup\n")
sshProcess.stdin.write(lsCommand)
sshProcess.stdin.flush()
lineList = []
for line in sshProcess.stdout.readlines():
line = line.replace("/","")
line = line.strip('\n')
line = line.strip('\r')
lineList.append(str(line))
lineList = lineList[6:-3]
while(True):
x = 0
for line in lineList:
x+=1
print "(" + str(x) + ") " + line
network_name = raw_input("Please select which network to use: ")
try:
network_name = lineList[int(network_name)-1]
networkCorrect = raw_input('You have selected %s. Is this correct? (Y/N): ' %(network_name))
if inputYNChecker(networkCorrect):
return network_name
else:
print "\nPlease select a number listed above.\n"
except:
print "\nPlease select a number listed above.\n"
Это дает мне следующий результат, который я хочу!
Using username "root". (1) A (2) B (3) C (4) D (5) E (6) F
Однако, когда я не имею lineList = lineList[6:-3]
в моем коде, я получаю:
Using username "root". (1) Last login: Thu Dec 8 13:59:51 2016 from 255.255.255.255 (2) cd mntPCAPSGroupSetup (3) ls -1 --color=never -d * (4) exit (5) ←]0;[email protected]_Control:~[[email protected]_Control ~]# cd mntPCAPSGroupSetup (6) ←]0;[email protected]_Control:mntPCAPSGroupSetup[[email protected]_Control GroupSetup]# ls -1 --color=never -d * (7) A (8) B (9) C (10) D (11) E (12) F (13) ←]0;[email protected]_Control:mntPCAPSGroupSetup[[email protected]_Control GroupSetup]# exit (14) logout (15) ←[H←[2J
Есть ли лучший способ избавиться от «мусора» возвращения на стандартный вывод кроме игнорирования конкретных строк?
Ваш код пытается найти папки и файлы в удаленном месте или ваша треска e на том же компьютере, что и папка и файлы, которые вы пытаетесь получить. – MooingRawr
Он подключается к удаленному серверу, переходит в конкретный каталог, а затем перечисляет все папки в этом каталоге. Я изменил имена IP и папок в приведенном выше примере. – Kevin
Возможно, создайте регулярное выражение или другую функцию фильтра, чтобы определить, следует ли печатать строку. 'if should_print (line): print (" ({}) ". format (line))' – sytech