【发布时间】:2016-02-01 02:55:08
【问题描述】:
我已尽我所能进行研究,并且已经到了使用 subprocess 和 subprocess.call 来帮助我将 python 变量发送到 bash 的地步。我设法从 bash 输出中获取了我的 python 变量,但现在我需要这些变量保持同步。我环顾四周无法学习如何有效地使用 subprocess.call。我一直在使用 subprocess.check_output 将 bash 输出完美地获取到 python 变量中。我很难理解 subprocess.call 如何接受参数以及如何正确使用它。我尝试遵循我认为正确的格式。 这是我的代码。 P.S 我是刚加入这个论坛的新手,尽管多年来我一直在使用它来获取大量有用的信息。我不知道如何格式化我的代码输入看起来像我在这里看到的那样漂亮。不管我确定你可以原谅我,因为我尝试了“代码”“块引用”等按钮。
###BEGINING OF CODE###
#! /usr/bin/env python2
import os,time,subprocess
#GRAB DATA
os.system('ifconfig > /tmp/ifconfig.txt;clear;cat /tmp/ifconfig.txt|grep "wlan"|cut -c 1-5 > /tmp/dev.lst;clear;')
#SET allwlan
allwlan=subprocess.check_output("cat /tmp/dev.lst", shell=True)
#SET max_index VARIABLE
max_index=subprocess.check_output("wc -l < /tmp/dev.lst", shell=True)
#SET curwlan WLAN LINE
#os.system(echo 2 > /tmp/curline.lst)
#STRIP DATA FOR curwlan
subprocess.call(['head', '-2', '/tmp/dev.lst', stdout=subprocess.PIPE, shell=True'])
#NEED#HELP#HERE# subprocess.call(['tail', '-1', > /tmp/curwlan.lst;')
#SET curwlan VARIABLE
curwlan=subprocess.check_output("cat /tmp/curwlan.lst", shell=True)
##STRIP EXCESS CHARACTERS/EMPTY LINES FROM VARIABLES##
curwlan=str(curwlan)
splitted=curwlan.split()
curwlan=splitted[0]
allwlan=allwlan[:-1]
splitted=max_index.split()
max_ index=splitted[0]
max_index=int(max_index)
##DEBUG MODE
print("Welcome, ")
print(" to debug mode. wireless adapter decting algorithm")
print
print("ALLWLAN:")
print(allwlan)
print
print("CURWLAN:")
print(curwlan)
print
print("MAX_INDEX:")
print(max_index)
print
input("PRESS ENTER TO EXIT")
####END OF CODE####*
我的代码中的错误是 #STRIP 数据用于 curwlan
这是我添加 subprocess.call 命令之前的输出。
Welcome,
to debug mode. wireless adapter decting algorithm
ALLWLAN:
wlan0
wlan3
CURWLAN:
wlan2
MAX_INDEX:
2
PRESS ENTER TO EXIT
我很想学习如何让我的 python 和 bash 部分一起交流它们的变量,我知道我在 subprocess.call 的正确轨道上,我已经挣扎了几天。我正在尝试制作自己的算法来检测我的无线网卡并能够使用每一个(可能有多少或无论它们可能被命名为什么)作为我的变量 由于我不断更改无线网卡名称,现在正在苦苦挣扎的旧脚本。在此先感谢我不明白我要求 subprocess.call 做的事情是否不切实际。
【问题讨论】:
-
我只是在我的 python 脚本中打印东西,在我的 bash 脚本中我执行 `someVar=$(python script.py)$
-
您的
tail命令在没有任何输入文件的情况下什么也不做。您尝试从哪个文件或流中提取最后一行? -
在 shebang 行之前不能有
###BEGINNING OF CODE###注释;它必须绝对是脚本文件中的第一件事。
标签: python linux bash debian wifi