2

さまざまな入力を受け入れる Python コードをよく見かけます...

ファイル名

s = Something("/Users/me/my_file.txt")

ファイル パス

s = Something("my_file.txt")

またはファイルオブジェクト

f = open("my_file.txt", "r")
s = Something(f)

これには慣習がありますか?多くの人が言及したように、それは何であるかによって異なりsomething()ます。ファイル名とファイル オブジェクトのどちらが適しているか?

このSO投稿が最良の答えを与えるのだろうか。

4

3 に答える 3

4

には、データをロードするためのjson2 つのメソッドjson.loadがあります。ファイルのようなオブジェクトを受け取るメソッドとjson.loads、文字列を受け取るメソッドです。

>>> json.load(open("my_file.json"))
[1, 2]
>>> json.loads("[1, 2]")
[1, 2]

モジュールには同様のpickleインターフェースがあります (1 つはファイル オブジェクトを受け入れ、もう 1 つは文字列を受け取ります)。

StringIO基本的に、API は主に file-objects を使用し、提供された文字列をobjectにラップする便利なメソッドを提供します。次のようになります。

class Parser(object):
    def __init__(self, fh):
        # Can do things like:
        first_line = fh.readline()
        fh.seek(0)
        all_content = fh.read()


def parse(fh):
    return Parser(fh)


def parse_str(inputstring):
    fh = StringIO.StringIO(inputstring)
    return Parser(fh)
于 2012-08-29T20:46:10.420 に答える
2

それはすべてのインターフェースに依存しますSomething()。これには厳密な規則が 1 つあります。ダック タイピングの良いところは、関数の引数の型を知る必要がなく、引数の特定の動作方法だけを知る必要があることです。

于 2012-08-29T19:27:01.583 に答える
0

適用可能な規則はないと思います。それはあなたのプログラムが何を達成したいかに完全に依存します。

于 2012-08-30T00:59:52.280 に答える