为不带引号的函数获取字符串参数

2024-10-01 15:36:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个函数,用来从URL下载一个文件并将其写入磁盘,同时附加一个特定的文件扩展名。目前,情况是这样的:

import requests
import os

def getpml(url,filename):
    psc = requests.get(url)
    outfile = os.path.join(os.getcwd(),filename+'.pml')
    f = open(outfile,'w')
    f.write(psc.content)
    f.close()
    try:
        with open(outfile) as f:
            print "File Successfully Written"
    except IOError as e:
        print "I/O Error, File Not Written"
    return

当我尝试

getpml('http://www.mysite.com/data.txt','download')我在当前工作目录中找到了适当的文件,下载.pml. 但是当我给函数提供相同的参数而不使用'符号时,Python会说一些类似于“NameError:name'download'没有定义”(URL产生语法错误)的意思。如果在函数本身中使用str(filename)或类似的东西,甚至会发生这种情况。在

我不希望在中输入带有引号字符的函数参数-这只会使输入URL等稍微困难一些。有什么想法吗?我认为有一种简单的方法可以做到这一点,但我的Python技能并不完美。在


Tags: 文件函数importurlosas情况open
2条回答

不,那不行。键入Python源代码时,必须在字符串周围加引号。否则,Python无法分辨字符串的开始和结束位置。在

看来你也有一个更普遍的误解。不带引号调用getpml(http://www.mysite.com)并不是用“没有引号的同一参数”来调用它。根本没有任何争论。不像有“带引号的参数”和“没有引号的参数”。Python不像说一种自然的人类语言,你可以发出任何声音,它取决于听众来理解你的意思。Python代码只能由某些构建块(对象名、字符串、运算符等)组成,而url不是其中之一。在

您可以用不同的方式调用函数:

data = """\
http://www.mysite.com/data1.txt download1
http://www.mysite.com/data2.txt download2
http://www.mysite.com/data3.txt download3
"""

for line in data.splitlines():
    url, filename = line.strip().split()
    getpml(url, filename)

相关问题 更多 >

    热门问题