python脚本可以将自己的内容输出到另一个文件吗?

时间:2019-06-20 20:02:30

标签: python python-3.x

我正在将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。在下面的答案中查看我的解决方案。

4 个答案:

答案 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)