我正在嘗試呼叫 foo.py,將 filePath 傳遞給 bar.py
foo.py
for path in Path('./csvs').rglob('*.csv'):
exec(open('bar.py').read())
exec(open('bar2.py').read())
exec(open('bar3.py').read())
酒吧.py
df = pd.read_csv(path, usecols=cols)
#rest of code
可能嗎?
uj5u.com熱心網友回復:
在.read()ing 一個檔案之后,你正在處理一個string。因此,您可以.replace()使用占位符。
檔案1.py:
exec(open("file2.py").read().replace("*place_holder*", "10"))
檔案2.py:
def fn():
print("My number is *place_holder*")
fn()
但請注意您選擇的占位符。.replace()將替換所有出現。
當然,對于更復雜的替換,您可以使用正則運算式。它可以更好、更安全地限制搜索。
uj5u.com熱心網友回復:
我不知道您的 bar.py 的確切格式,但您可以嘗試:
for filePath in Path('./csvs').rglob('*.csv'):
for i in range(1, 4):
with open(f`bar{i}.py`) as f;
bar_py_str = f.read()
bar_py_str = bar_py_str.replace(
'df = pd.read_csv(filePath, usecols=cols)',
f'df = pd.read_csv({str(filePath.resolve()}, usecols=cols)'
)
exec(bar_py_str)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/518603.html
標籤:Python小路
