I have two questions
-
For below code, only data from first ten text files is copied into excel but data in 11th text is not copied into excel. What is the reason?
from pathlib import Pathimport pandas as pd
import xlwings as xwcurrent_dir = Path(_file).parent if “file” in locals() else Path.cwd()
input_dir = current_dir / r “Location1”
output_dir = current_dir / r”Location2”
output_dir.mkdir(exist_ok = True, parents = True)files = list(input_dir.rglob(“*.txt”))
#print(*files)excel_template = current_dir / r “Location3”
keys = set(““.join(file.stem.split(””)[:3]) for file in files)
#print(keys)
with xw.App(visible=False) as app:
for key in keys: wb = app.books.open(excel_template) for file in files: if file.stem.startswith(key): if file.stem.endswith("___1"): df = pd.read_csv(file, sep="\t", header=4) wb.sheets("Pt_1").range((1,1)).options(index=False).value = df elif file.stem.endswith("___2"): df = pd.read_csv(file, sep="\t", header=4, usecols=[1]) wb.sheets("Pt_1").range((1,3)).options(index=False).value = df elif file.stem.endswith("___3"): df = pd.read_csv(file, sep="\t", header=4, usecols=[1]) wb.sheets("Pt_1").range((1,4)).options(index=False).value = df elif file.stem.endswith("___4"): df = pd.read_csv(file, sep="\t", header=4, usecols=[1]) wb.sheets("Pt_1").range((1,5)).options(index=False).value = df elif file.stem.endswith("___5"): df = pd.read_csv(file, sep="\t", header=4, usecols=[1]) wb.sheets("Pt_1").range((1,6)).options(index=False).value = df elif file.stem.endswith("___6"): df = pd.read_csv(file, sep="\t", header=4, usecols=[1]) wb.sheets("Pt_1").range((1,7)).options(index=False).value = df elif file.stem.endswith("___7"): df = pd.read_csv(file, sep="\t", header=4, usecols=[1]) wb.sheets("Pt_1").range((1,8)).options(index=False).value = df elif file.stem.endswith("___8"): df = pd.read_csv(file, sep="\t", header=4, usecols=[1]) wb.sheets("Pt_1").range((1,9)).options(index=False).value = df elif file.stem.endswith("___9"): df = pd.read_csv(file, sep="\t", header=4, usecols=[1]) wb.sheets("Pt_1").range((1,10)).options(index=False).value = df elif file.stem.endswith("___10"): df = pd.read_csv(file, sep="\t", header=4, usecols=[1]) wb.sheets("Pt_1").range((1,11)).options(index=False).value = df elif file.stem.endswith("___11"): df = pd.read_csv(file, sep="\t", header=4, usecols=[1]) wb.sheets("Pt_1").range((1,12)).options(index=False).value = df wb.save(output_dir / f"{key}_Results.xlsm")
2. How do I automate using for loop or any iterative loops for text files from 2 to 34 by updating above code?