我正在将python脚本中的一些数据导出到Excel文件,我想知道是否也可以将当前正在运行的脚本的内容导出到该Excel文件。这样可以节省时间,这样我每次运行脚本时都不必将脚本手动复制到该Excel文件中。
我写Excel没问题,唯一的问题是我不知道python是否可以写出自己的脚本内容。
val uuid = UUID.randomUUID().toString
println(uuid)
val scn = scenario("Testing !")
.exec(http("create resource")
.post("/data")
.body(StringBody(
"""{
"add_name": "${uuid}",
}""")).asJSON
.check(status is(200)))
编辑:可能的重复项不是一个完整的解决方案,因为它仅返回一个字符串,而我的问题需要源代码的DataFrame。在下面的答案中查看我的解决方案。
答案 0 :(得分:1)
大多数Python模块都有一个__file__
全局变量,用于指定从中加载源文件。假设脚本全部在一个模块中,打开该文件并读取它可能是获取脚本源的最简单方法。
with open(__file__) as source_file:
source = source_file.read()
# do whatever you want with the source string
答案 1 :(得分:0)
请参见How can I get the source code of a python function?
如果您的代码是在函数foo()
下编写的:
import inspect
lines = inspect.getsource(foo)
变量lines
现在保存函数foo()
的源代码。
答案 2 :(得分:0)
将此添加到脚本中:
from pathlib import Path
script_contents = Path(__file__).read_text()
答案 3 :(得分:-1)
我在这里找不到其他答案的解决方案,但确实找到了一种可行的方法,部分使用了上面评论中提供的链接Gerges。
我使用了inspect
模块来获取脚本内容并将其转换为DataFrame以进行导出。解决方案这是有效的解决方案:
import pandas
from pandas.compat import StringIO
import inspect
def sample():
excel_file = pandas.ExcelFile(r"file.xlsx")
df = excel_file.parse("Sheet Name")
random_sample = df.sample(n=5, random_state=1)
return random_sample
my_sample = sample()
script_text = pandas.read_csv(StringIO(inspect.getsource(inspect.getmodule(inspect.currentframe()))), sep="\n")
with pandas.ExcelWriter('output.xlsx') as writer:
my_sample.to_excel(writer, sheet_name='Sample', index=False)
script_text.to_excel(writer, sheet_name='Script', index=False)