Э-э, как насчет почтенного:
if len(str) > 0:
if str[-1:] == ",":
str = str[:-1]
Если подумать, само по себе rstrip
должно работать нормально, поэтому в строке, которую вы получаете из awk
, есть что-то, что не совсем то, что вы ожидаете. Нам нужно это увидеть.
Я подозреваю, что это потому, что ваша строка не на самом деле заканчивается запятой. Когда вы запускаете:
str = "hello,"
print str.rstrip(",")
str = "hello,\n"
print str.rstrip(",")
print str.rstrip(",\n")
вывод:
hello
hello,
hello
Другими словами, если в конце строки есть символ новой строки, а также запятая, вам нужно rstrip
оба символа с ",\n"
.
Хорошо, основываясь на вашем комментарии, вот что вы пытаетесь:
uptime = subprocess.Popen([r"uptime"], stdout=subprocess.PIPE)
uptime_stdout = uptime.communicate()[0]
print uptime_stdout
awk = subprocess.Popen([r"awk", "{print $11}"], stdin=subprocess.PIPE)
awk_stdin = awk.communicate(uptime_stdout)[0]
print repr(awk_stdin)
temp = awk_stdin
tem = temp.rstrip("\n")
logfile = open('/usr/src/python/uptime.log', 'a')
logfile.write(tem + "\n")
logfile.close()
Что вы на самом деле получаете от ваших двух print
утверждений и что добавляется в файл журнала?
Мой конкретный uptime
не имеет a $11
:
23:43:10 up 5:10, 0 users, load average: 0.00, 0.00, 0.00
но ваш может отличаться.
Тем не менее, нам нужно увидеть вывод вашего скрипта.