文本文件输入:
10g/主机_IP,UID,PWD,主机名,15-2-7
10g/主机_IP,UID,PWD,主机名,12-2-7
root = tk.Tk()
root.attributes("-topmost", True)
root.withdraw()
file = tkinter.filedialog.askopenfilename()
def _10g_script (params):
print (type(params)) ## says params is a str
for items in params:
params1 = items.split(",")
## print(IP, UID, PWD, TID, SH_SL_PT) ## is what I am wanting here,
##then I will split the SH_SL_PT
print (type(params1)) ## says params is a list
with open(file,"r") as fh:
for lines in fh:
rate, param = lines.strip().split("/")
if rate == "10G":
_10g_script(param)
print (type(param)) ## says param is a str我要尝试的是将代码行从文本文件中分离出来-- rate和其余的参数、rate和其他参数--分成不同的变量。将速率传递到函数中,然后将变量params进一步拆分为更多变量(Host_IP、UID、PWD、主机名、SH_SL_PT)。
第一个拆分是str,在拆分之后,但是当我尝试第二个拆分时,它说它是一个列表。
我尝试过连接,但它将每个字符作为自己的字符串,在字符之间加上",“。
如能提供任何帮助,将不胜感激。
发布于 2021-12-11 05:58:55
我们来看一遍密码。您的代码从这里开始:
with open(file,"r") as fh:
for lines in fh:
rate, param = lines.strip().split("/")
if rate == "10G":
_10g_script(param)
print (type(param)) ## says param is a str我们首先打开文件,然后跳入for循环。这个循环将文档分成几行,并将这些行放入其中的列表中,这意味着变量行是文档的一行的字符串,每次迭代我们都会转到下一行。
接下来,我们使用"/“拆分行。这个拆分创建了一个包含两个元素的列表,其中包含lines.strip().split("/") = "10G“、"Host_IP、UID、PWD、Host-Name、12-2-7”。然而,在左边放了两个变量,rate和param,所以python设置rate = "10G“和param = "Host_IP,UID,PWD,Host-Name,12-2-7”。
在你的函数中,你看到的是一个字符串。因此,当您试图遍历它时,python假设您希望循环的每一次迭代都通过一个字符。
因此,您可以做的不是编写函数_10g_script,而是:
with open(file,"r") as fh:
for lines in fh:
rate, param = lines.strip().split("/")
if rate == "10G":
#IP = "Host_IP", UID = "UID", TID = "TID", SH_SL_PT
IP, UID, PWD, TID, SH_SL_PT = param.split(",")
print(IP,UID,TID,SH_SL_PT)然后,您将对SH_SL_PT做同样的操作,编写如下:
SH,SL,PT = SH_SL_PT.split("-") 在你需要的地方。
https://stackoverflow.com/questions/70312641
复制相似问题