1

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')現在の作業ディレクトリdownload.pmlに適切なファイルがあります。しかし、'記号なしで同じ引数を関数にフィードすると、Pythonは「NameError:name' download' is not defined」(URLは構文エラーを生成します)の効果を示します。これは、関数自体の中で、私が使用したり、そのようなことをした場合でも発生str(filename)します。

関数の引数を引用符で入力する必要はありません。URLなどの入力が少し難しくなります。何か案は?これを行う簡単な方法があると思いますが、私のPythonスキルはむらがあります。

4

2 に答える 2

4

いいえ、それはできません。Python ソース コードを入力するときは、文字列を引用符で囲む必要があります。そうしないと、Python は文字列の開始位置と終了位置を認識できません。

あなたももっと一般的な誤解をしているようです。引用符なしで呼び出すgetpml(http://www.mysite.com)ことは、「引用符なしで同じ引数」で呼び出すことではありません。そこにはまったく議論がありません。「引用符付きの引数」と「引用符なしの引数」があるわけではありません。Python は、任意の音を出すことができる自然な人間の言語を話すようなものではなく、言いたいことを理解するのは聞き手次第です。Python コードは、特定のビルディング ブロック (オブジェクト名、文字列、演算子など) でしか構成できず、URL はそれらの 1 つではありません。

于 2013-01-03T01:47:08.340 に答える
2

関数を別の方法で呼び出すことができます。

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)
于 2013-01-03T01:50:56.377 に答える