Python 如何读取文本文件中的两个参数?
我开始用python编程了。我有一个关于在我的代码中读取文本文件中的两个文件的问题Python 如何读取文本文件中的两个参数?,python,Python,我开始用python编程了。我有一个关于在我的代码中读取文本文件中的两个文件的问题 arq=open(“output.txt”、“w”) 计数=0 file_path=“/homescript/ASN.txt” 打开(文件路径)作为文件: 对于文件中的行: line=line.rstrip() 如果行中的“AS”: 计数=计数+1 打印(“设置策略”,行,“然后接受”,行,文件=arq) 打印(“\n显示返回”,计数,“行”) 我的文本文件包含: AS0000 192.168.0.1/24 1
arq=open(“output.txt”、“w”)
计数=0
file_path=“/homescript/ASN.txt”
打开(文件路径)作为文件:
对于文件中的行:
line=line.rstrip()
如果行中的“AS”:
计数=计数+1
打印(“设置策略”,行,“然后接受”,行,文件=arq)
打印(“\n显示返回”,计数,“行”)
我的文本文件包含:
AS0000
192.168.0.1/24
192.168.1.0/24
我需要在“then accept”之后打印ip地址。您需要使用
.readlines
方法获取文件中的行,而不仅仅是尝试从整个文件对象进行迭代。如果需要原始转储,请使用file.read()
arq=open(“output.txt”、“w”)
计数=0
file_path=“/homescript/ASN.txt”
打开(文件路径)作为文件:
对于文件.readlines()中的行:
line=line.rstrip()
如果行中的“AS”:
计数=计数+1
打印(“设置策略”,行,“然后接受”,行,文件=arq)
打印(“\n显示返回”,计数,“行”)
arq.close()
另外,不要忘记
.close()
文件。您需要使用.readlines
方法获取文件中的行,而不仅仅是尝试从整个文件对象进行迭代。如果需要原始转储,请使用file.read()
arq = open("output.txt", "w")
count = 0
file = open("/homescript/ASN.txt", "r")
t = []
for line in file.readlines():
line = line.strip()
t.append(line)
for i in range(len(t)):
if 'AS' in t[i]:
count = count + 1
print("set policy", t[i], "then accept", t[i+1])
print("set policy", t[i], "then accept", t[i+2])
print("\n Display return", count, "lines")
arq=open(“output.txt”、“w”)
计数=0
file_path=“/homescript/ASN.txt”
打开(文件路径)作为文件:
对于文件.readlines()中的行:
line=line.rstrip()
如果行中的“AS”:
计数=计数+1
打印(“设置策略”,行,“然后接受”,行,文件=arq)
打印(“\n显示返回”,计数,“行”)
arq.close()
另外,不要忘记.close()
文件
arq = open("output.txt", "w")
count = 0
file = open("/homescript/ASN.txt", "r")
t = []
for line in file.readlines():
line = line.strip()
t.append(line)
for i in range(len(t)):
if 'AS' in t[i]:
count = count + 1
print("set policy", t[i], "then accept", t[i+1])
print("set policy", t[i], "then accept", t[i+2])
print("\n Display return", count, "lines")
一个简单的方法
如您所见,上面的代码读取整个文件并在列表上迭代。如果一行包含“AS”,则下一行提取为IP地址。这并不是最具Python风格的解决方案,但对于初学者来说,应该已经足够好了
一个更像蟒蛇的 使用python 3文档中的代码,您可以更轻松地执行此操作:
from itertools import tee
def pairwise(iterable):
"s -> (s0,s1), (s1,s2), (s2, s3), ..."
a, b = tee(iterable)
next(b, None)
return zip(a, b)
count = 0
file_path = "/homescript/ASN.txt"
with open(file_path) as file, open("output.txt", "w") as arq:
for line, next_line in pairwise(file):
if 'AS' in line:
count += 1
ip = next_line.rstrip()
print("set policy", line, "then accept", ip, file=arq)
print ("\n Display return", count, "lines")
简单的方法
如您所见,上面的代码读取整个文件并在列表上迭代。如果一行包含“AS”,则下一行提取为IP地址。这并不是最具Python风格的解决方案,但对于初学者来说,应该已经足够好了
一个更像蟒蛇的 使用python 3文档中的代码,您可以更轻松地执行此操作:
from itertools import tee
def pairwise(iterable):
"s -> (s0,s1), (s1,s2), (s2, s3), ..."
a, b = tee(iterable)
next(b, None)
return zip(a, b)
count = 0
file_path = "/homescript/ASN.txt"
with open(file_path) as file, open("output.txt", "w") as arq:
for line, next_line in pairwise(file):
if 'AS' in line:
count += 1
ip = next_line.rstrip()
print("set policy", line, "then accept", ip, file=arq)
print ("\n Display return", count, "lines")
你能检查一下上面代码的缩进吗?第一次打印仅在行包含“AS”时有效,即IP地址不会到达代码的该部分。示例文件中的所有行中都没有
'AS'
。您的预期输出是什么>此案例为我返回“设置策略AS0000然后接受AS0000”我没有获得IP地址,我是否必须使用正则表达式来获取AS和ip地址?预期输出将策略设置为0000,然后接受192.168.0.1/24
?您可以检查上面代码的缩进吗?第一次打印仅在行包含“AS”时有效,即IP地址不会到达代码的该部分。示例文件中的所有行中都没有'AS'
。您的预期输出是什么>此案例为我返回“设置策略AS0000然后接受AS0000”我没有获得IP地址,我是否必须使用正则表达式获取AS和ip地址?预期输出将策略设置为0000然后接受192.168.0.1/24
?此案例为我返回“设置策略为0000然后接受AS0000”我没有获取ip地址,我是否必须使用正则表达式获取AS和ip地址?尝试在文件末尾添加一个空行,因为从文件中读取时,最后一个字符通常会被剥离。此外,当您使用文件
时,它不会读取它,它会返回一些数据,如
此示例返回给我“设置策略AS0000然后接受AS0000”我无法获取ip地址,我是否必须使用正则表达式来获取AS和ip地址?请尝试在文件末尾添加一个空行,因为在读取文件时,最后一个字符通常会被删除。此外,当使用文件时,它不会读取它,它返回一些数据,如
我的预期输出:将策略设置为0000,然后接受192.168.0.1/24;将策略设置为0000,然后接受192.168.1.0/24。我尚未更新输出,我的预期输出:将策略设置为0000,然后接受192.168.0.1/24,将策略设置为0000,然后接受192.168.1.0/24我尚未更新输出,但代码将按照您的预期工作。