如何从文本文件中读取一行并将其用作输入

时间:2014-11-03 20:16:39

标签: python file input output

我正在编写一个程序来在网络交换机上执行几个命令。该代码基本上要求用户输入网络节点的IP地址,然后将其telnet到其中并执行命令。我已经使代码工作了。现在,假设我需要运行100多个交换机,我将不得不运行脚本100多次。我想也许我可以在文本文件中放入IP地址列表,每行一个,然后代码实际上读取第一行(IP地址)将该地址作为输入telnet到交换机,然后telnet进入切换然后移动到文本文件中的下一行,直到文件结束。以下是我打算使用的内容:

文字档案

172.16.1.1

172.16.1.2

172.16.1.3

172.16.1.4

..........

..........

172.16.1.254

我正在考虑使用以下代码

import fileinput

for line in fileinput.input(['myfile']):
    do_something(line) 

那么我应该为它读取的每一行使用什么变量类型,然后将其作为输入然后执行代码。

谢谢 甲

1 个答案:

答案 0 :(得分:0)

您可以使用open函数打开文件,然后按行迭代:

with open("your_file.txt") as file:
     for line in file:
          do_something(line)

如果您想先存储这些IP地址(您可能应该这样做),您可以将它们包含在列表中(your_list = []),并将do_something(line)替换为your_list.append(line)。< / p>

请记住,您可能希望对每一行进行某种验证,以确保它只是数字而不是空格,空白字符,字母等。您可以轻松地执行此操作:< / p>

 formatted_line = ''.join([a for a in line if a.isdigit() or a == '.'])

这将创建每个数字字符的列表,然后使用join按顺序将每个字母添加回字符串。请注意,这假设您仅使用IPv4地址 - 如果您使用的是v6,则需要使用不同的格式化逻辑。

您存储IP地址的类型完全取决于您想要使用的内容(而且您还没有告诉我们),但我认为在大多数情况下,您最好离开它是一个字符串。