如何从源文件末尾读取数据?
我想到的唯一方法是从程序中重新打开源代码并将源代码读取为文本。必须有处理.pyc
文件的代码。
有没有更简单,更Python化的方法来做到这一点?我想它可能涉及某种在python源文件中进行正向引用的方法,例如这样(不起作用)。
test_data = gettestdata()
for d in data:
# do all kinds of stuff in may lines of code
def gettestdata():
return \
(many lines of data)
答案 0 :(得分:1)
假定所有内容都应在函数/类内部,则主要函数仅存在于解析参数,启动记录器和其他非函数性内容的情况。
代码
#!/usr/bin/python3
# -*- coding: utf-8 -*-
def run(input_data):
return input_data
if __name__ == '__main__':
# initiate loggers
# make other things
data = "qqqqqqqqqq" \
"wwwwwwwwwww" \
"eeeeeeeeeee"
result = run(data)
print(result)
输出
qqqqqqqqqwwwwwwwwwwwwweeeeeeeeeee
是您想要的吗?如果没有,抱歉,我不知道其他“ pythonic”方式。
答案 1 :(得分:0)
您有一个或多个要提取的“大”字符串,例如SQL CREATE TABLE语句。 使用三引号语法将每个人都埋在吸气剂中。 例如:
def get_create_foo():
return """
create table foo (
id integer primary key,
...
);
"""
然后打一个电话
session.execute(get_create_foo())
是一个很好的紧凑型单缸纸。
对于测试数据,您可能希望.split()
或以其他方式对数据进行处理,以使其易于迭代。
对于大型测试数据,它可能属于一个单独的文件,例如CSV。
考虑使用.from_csv()
将其插入,这很方便。
请记住,__file__
可以告诉您脚本的运行位置。
(在某些情况下,例如脚本位于$ PYTHONPATH上的.zip文件中。)
这是用于在与源代码相同的文件夹中查找CSV的标准用法:
from pathlib import Path
import os
folder = Path(os.path.abspath(os.path.dirname(__file__)))
with open(folder / 'foo.csv') as file_in:
...