python - python中的循环不适用于文本文件中的所有行
问题描述
此代码用于获取 mikrotik 设备的身份。运行此代码后。仅适用于最后一个 IP
ip.txt 中的行
192.168.3.6 --> NET_6
192.168.3.8 --> NET_8
192.168.3.10 --> NET_10
import os
filename = 'ip.txt'
with open(filename, 'r') as f:
for line in f:
pq = os.popen('plink -batch admin@' + line + ' -pw 123456@ "/system identity print"')
line = pq.readline()
print(line)
Using username "admin".
Using username "admin".
name: NET_10
解决方案
问题是line = pq.readline()
,在这里您使用与for相同的变量,您应该使用另一个名称。
简单测试
您可以为测试做的只是将txt文件的每一行打印为以下代码:
FILE_NAME = 'ip.txt'
with open(FILE_NAME, 'r') as f:
for line in f:
print(line)
如果代码打印出您的文件,那么您可以添加您的逻辑。
使用 os.popen
现在你做了一个测试,只是读取文件让我们使用os.popen()
,但请注意我确实更改了你的代码并更改了变量名,因为你使用的变量名与 for. 试试下面的代码,这应该可以正常工作
import os
FILE_NAME = 'ip.txt'
with open(FILE_NAME, 'r') as f:
for line in f:
pq = os.popen('plink -batch admin@' + line + ' -pw 123456@ "/system identity print"')
response = pq.readline()
print('Current line: {}'.format(line))
print('Response from popen: {}'.format(response))
推荐阅读
- javascript - 使用 Google 表格来统计数据集
- angular - 无法使用 i18n 的 Angular 7 中的文件本地化/翻译
- javascript - 从正则表达式的文字符号中删除反斜杠
- haskell - 在 Haskell 中的半群实例中加入半格实例
- javascript - 在每个确认的游戏中,Square 跌得更快
- ios - 防止 Xcode 重建更改配置
- python - 在 keras 张量中复制一列
- use-case - 实体与用例说明
- javascript - Jquery UI Datepicker - 依赖日期选择器排除 Maxdate 中的假期
- excel - 设置范围时 VBA 运行时错误 1004