Python 循环和子流程中的列表,标准输出
我想在for循环中调用一个子流程,并将垂直行水平放置在列表中,以便通过逗号分隔打印它们。 我的代码是这样的Python 循环和子流程中的列表,标准输出,python,linux,bash,python-2.7,Python,Linux,Bash,Python 2.7,我想在for循环中调用一个子流程,并将垂直行水平放置在列表中,以便通过逗号分隔打印它们。 我的代码是这样的 import serial import time import subprocess #test subprocess.call(['echo','I am Learning to use Subprocesses']) #when Using subproce
import serial
import time
import subprocess #test
subprocess.call(['echo','I am Learning to use Subprocesses']) #when Using subprocess.call([*1,*2]) *1 is the first argument and it is the bash code, *2 is the opti$
ser = serial.Serial("/dev/ttyUSB0", 4800, timeout = 1)
file = open("/home/pi/GPSWIFIMODIFIED.csv", "a")
file.write('\n')
for i in range(0,50):
date = time.time()
val = ser.readline();
if val.find("GPGGA")==-1: continue
#### subprocess.call([iwlist, scan and the stuff
### iwlout = sys.stdout(((( output on the screen)))))) the output which iwlist wlan0 scan will put on the screen
### line = iwlout.readline()
### for j in range (1,40):
### if line.find("Cell +j")==-1:
#### mylistofwifi = [line.find("Address"),line.find("Quality"),line.find("IEEE"),line.find("Pairwise")]
#### ########################### ######Here there must be iwlist scan, and the gathering must be done
print >> file ,date,',',val[:42],',','WIFI DATA WILL BE HERE'# print mylistofwifi will be here
file.close()
目前工作的行逐行存储数据,我想要的是将我从iwlist scan输出中选择的行添加到有时间和GPGGA数据的行的末尾
问题是,我是Python新手,不能有效地使用列表、解析或子流程
如有任何建议,我们将不胜感激,提前感谢
sudo wlan0 iwlist的输出scan:
Cell 01 - Address: 00:26:99:4D:0F:34
Channel:11
Frequency:2.462 GHz (Channel 11)
Quality=18/100 Signal level=18/100
Encryption key:on
ESSID:"STAFF"
Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 6 Mb/s; 9 Mb/s
11 Mb/s; 12 Mb/s; 18 Mb/s
Bit Rates:24 Mb/s; 36 Mb/s; 48 Mb/s; 54 Mb/s
Mode:Master
Extra:tsf=0000000db0b79259
Extra: Last beacon: 0ms ago
IE: Unknown: 00055354414646
IE: Unknown: 010882040B0C12161824
IE: Unknown: 03010B
IE: Unknown: 0706494520010D14
IE: Unknown: 0B0504000E8D5B
IE: Unknown: 2A0100
IE: IEEE 802.11i/WPA2 Version 1
Group Cipher : CCMP
Pairwise Ciphers (1) : CCMP
Authentication Suites (2) : 802.1x Proprietary
IE: Unknown: 32043048606C
IE: Unknown: 851E06008F000F00FF03590045452D472D303100000000000000000004000027
IE: Unknown: 9606004096000E00
IE: Unknown: DD180050F2020101800003A4000027A4000042435E0062322F00
IE: Unknown: DD06004096010104
IE: Unknown: DD050040960305
IE: Unknown: DD050040960B09
IE: Unknown: DD050040961401
Cell 02 - Address: 00:26:99:4D:0D:35
Channel:11
Frequency:2.462 GHz (Channel 11)
Quality=21/100 Signal level=21/100
Encryption key:on
ESSID:"eduroam"
Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 6 Mb/s; 9 Mb/s
11 Mb/s; 12 Mb/s; 18 Mb/s
Bit Rates:24 Mb/s; 36 Mb/s; 48 Mb/s; 54 Mb/s
Mode:Master
Extra:tsf=000001021e097bd4
Extra: Last beacon: 0ms ago
IE: Unknown: 0007656475726F616D
IE: Unknown: 010882848B0C12961824
IE: Unknown: 03010B
IE: Unknown: 0706494520010D14
IE: Unknown: 0B0503000C8D5B
IE: Unknown: 2A0100
IE: IEEE 802.11i/WPA2 Version 1
Group Cipher : TKIP
Pairwise Ciphers (2) : TKIP CCMP
Authentication Suites (2) : 802.1x Proprietary
IE: Unknown: 32043048606C
IE: Unknown: 851E02008F000F00FF03590045452D472D303200000000000000000003000027
IE: Unknown: 9606004096000B00
IE: WPA Version 1
Group Cipher : TKIP
Pairwise Ciphers (1) : TKIP
Authentication Suites (2) : 802.1x Proprietary
IE: Unknown: DD180050F2020101800003A4000027A4000042435E0062322F00
IE: Unknown: DD06004096010104
IE: Unknown: DD050040960305
IE: Unknown: DD050040960B09
IE: Unknown: DD050040961401
Cell 03 - Address: 00:26:99:4D:0D:30
Channel:11
Frequency:2.462 GHz (Channel 11)
Quality=21/100 Signal level=21/100
Encryption key:on
ESSID:"CONF"
Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 6 Mb/s; 9 Mb/s
11 Mb/s; 12 Mb/s; 18 Mb/s
Bit Rates:24 Mb/s; 36 Mb/s; 48 Mb/s; 54 Mb/s
Mode:Master
Extra:tsf=000001021e0e36dd
Extra: Last beacon: 0ms ago
IE: Unknown: 0004434F4E46
IE: Unknown: 010882848B0C12961824
IE: Unknown: 03010B
IE: Unknown: 0706494520010D14
IE: Unknown: 0B0503000C8D5B
IE: Unknown: 2A0100
IE: Unknown: 32043048606C
IE: Unknown: 851E02008F000F00FF03590045452D472D303200000000000000000003000027
IE: Unknown: 9606004096000B00
IE: WPA Version 1
Group Cipher : TKIP
Pairwise Ciphers (1) : TKIP
Authentication Suites (1) : PSK
IE: Unknown: DD180050F2020101800003A4000027A4000042435E0062322F00
IE: Unknown: DD06004096010104
IE: Unknown: DD050040960305
IE: Unknown: DD050040960B09
IE: Unknown: DD050040961400
在没有子进程调用的情况下运行文件的输出([iwlist和stuff
(不包括注释行)
您可以使用获取进程的输出:
from subprocess import check_output
iwout = check_output(['wlan0', 'iwlist', 'scan']).splitlines()
然后在打印时:
print >> file, date, ',', val[:42], ',', ', '.join(iwout)
您可以将iwout
替换为map(strip,iwout)
以删除不必要的空白
正如您所看到的,我删除了
sudo
,因为它可能会阻止请求密码的执行,所以您不应该在脚本中包含sudo
调用,除非它们是交互式的,否则您应该以root权限运行所有命令,然后在不使用sudo的情况下执行所有调用。您想要全部吗线路?谢谢你的回答,但我需要使用sudo,否则我看不到所有的单元格,我只能看到我连接的单元格------但问题是我只需要“sudo wlan0 iwlist scan”中的特定线路输出,包含第一个小区的ESSID、质量、加密、802.11的行,第二个小区相同,第三个小区相同,直到最后一个小区,选择器代码可以添加到check_输出中,还是可以重定向?
print >> file, date, ',', val[:42], ',', ', '.join(iwout)