对不起这个非常基本的问题。我是Python的新手,并试图编写一个可以打印URL链接的脚本。 IP地址存储在名为list.txt的文件中。我该如何在链接中使用变量?你能帮忙吗?
# cat list.txt
192.168.0.1
192.168.0.2
192.168.0.9
脚本:
import sys
import os
file = open('/home/list.txt', 'r')
for line in file.readlines():
source = line.strip('\n')
print source
link = "https://(source)/result”
print link
输出:
192.168.0.1
192.168.0.2
192.168.0.9
https://(source)/result
预期产出:
192.168.0.1
192.168.0.2
192.168.0.9
https://192.168.0.1/result
https://192.168.0.2/result
https://192.168.0.9/result
答案 0 :(得分:6)
您需要传递实际变量,您可以迭代文件对象,这样您就不需要使用readlines并使用with
打开文件,因为它会自动关闭它们。如果要查看每一行,还需要在循环内打印,str.rstrip()
将从每行末尾删除任何换行符:
with open('/home/list.txt') as f:
for ip in f:
print "https://{0}/result".format(ip.rstrip())
如果您想存储所有链接,请使用list comprehension:
with open('/home/list.txt' as f:
links = ["https://{0}/result".format(ip.rstrip()) for line in f]
对于python 2.6,你必须使用str.format传递位置参数的数字索引,,{0}
。
您还可以使用名称传递给str.format:
with open('/home/list.txt') as f:
for ip in f:
print "https://{ip}/result".format(ip=ip.rstrip())
答案 1 :(得分:2)
试试这个:
lines = [line.strip('\n') for line in file]
for source in lines:
print source
for source in lines:
link = "https://{}/result".format(source)
print link
您刚才描述的功能通常称为string interpolation。 在Python中,这称为string formatting。
Python中有两种字符串格式:旧样式和新样式。
我在上面的示例中显示的是新样式,我们使用名为format
的字符串方法进行格式化。
旧样式使用%
运算符,例如。 "https://%s/result" % source
答案 2 :(得分:2)
获取循环内部的链接,您不会向其追加数据,而是每次都分配给它。使用这样的东西:
file = open('/home/list.txt', 'r')
for line in file.readlines():
source = line.strip('\n')
print source
link = "https://%s/result" %(source)
print link
答案 3 :(得分:2)
对字符串使用格式说明符,并且仅将链接打印部分放在for循环中 像这样的东西:
import sys
import os
file = open('/home/list.txt', 'r')
for line in file.readlines():
source = line.strip('\n')
print source
link = "https://%s/result”%source
print link
答案 4 :(得分:1)
import sys
import os
file = open('/home/list.txt', 'r')
for line in file.readlines():
source = line.strip('\n')
print source
link = "https://" + str(source) + "/result”
print link