传入文件路径、文件名或文件对象的 Python 约定

标签 python

我经常看到接受各种输入的 Python 代码...

文件名

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

文件路径

s = Something("my_file.txt")

或文件对象

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

这有约定吗? 正如很多人提到的,这取决于 something() 是什么。哪些情况更适合文件名和文件对象?

我想知道 this SO帖子给出了最佳答案。

最佳答案

json有两种加载数据的方法:json.load 接受类文件对象,json.loads 接受字符串:

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

pickle模块有一个相似的接口(interface)(一个接受一个文件对象,第二个接受一个字符串)

本质上,您的 API 主要使用文件对象,并且您提供了一种将提供的字符串包装在 StringIO 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)

关于传入文件路径、文件名或文件对象的 Python 约定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12185103/

相关文章:

python - 我想使用 Networkx 和 Matplotlib 输出 3D 图形

python - Pandas set_index 多索引查找

python - 绘制 wav 音频文件的频谱图

python - 如何在Python中使用pdfminer从在线PDF中提取文本

python - 如何将文件系统上文件夹的相对路径转换为绝对路径

python - 保留 Django FormView 数据

python - Scikit-learn 中的受限玻尔兹曼机 : Iris Classification

Python Mechanize : UnicodeEncodeError when uploading UTF-8 file. 'ascii'编解码器

python - 在线读取 csv 时出现错误 Error tokenizing data

python请求检查文件是否正确下载