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

我开始用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
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我尚未更新输出,但代码将按照您的预期工作。