如何在我的电脑中使用Python中的此代码打开TXT文件?[重复]

eivgtgni  于 2023-04-22  发布在  Python
关注(0)|答案(2)|浏览(116)

此问题已在此处有答案

What exactly is current working directory?(5个答案)
5天前关闭。
我用这段代码打开几个名字中有特定数字的TXT,它开始从第12行及以下获取数据。当它找到它们时,它会在右侧添加一个带有标识号的列。6个TXT文件的连接文件保存在一个名为join的Excel文件中。问题是我得到消息“进程已完成,退出代码为0”,但我没有“我无法获取Pycharm中生成的文件。是因为我使用了一个本地地址来存放我的文件吗?

import pandas as pd
import os
import re

ruta_carpeta = r"C:\Users\José\Documents\prueba1_validador"

archivos_txt = [archivo for archivo in os.listdir(ruta_carpeta) if archivo.endswith(".txt")]

df = pd.DataFrame()

for archivo in archivos_txt:
    ruta_archivo = os.path.join(ruta_carpeta, archivo)

    with open(ruta_archivo, "r") as f:
        contenido_archivo = f.readlines()[11:] 

    df_archivo = pd.DataFrame([linea.strip().split() for linea in contenido_archivo])

    if re.search(r"24645", archivo):
        df_archivo["Columna"] = "1"
    elif re.search(r"33033", archivo):
        df_archivo["Columna"] = "2"
    elif re.search(r"57375", archivo):
        df_archivo["Columna"] = "3"
    elif re.search(r"38831", archivo):
        df_archivo["Columna"] = "4"
    elif re.search(r"79441", archivo):
        df_archivo["Columna"] = "5"
    elif re.search(r"50025", archivo):
        df_archivo["Columna"] = "6"
    else:
        df_archivo["Columna"] = ""

    df = pd.concat([df, df_archivo], ignore_index=True)

ruta_archivo_excel = os.path.join(ruta_carpeta, "join.xlsx")

with pd.ExcelWriter(ruta_archivo_excel) as writer:
    df.to_excel(writer, index=False)

print("Excel file was generated:", ruta_archivo_excel)

试图使用这个简单的代码作为一个例子来测试,但不能工作。

ruta_archivo = r"C:\Users\José\Documents\prueba1_validador\TXT\33033_TRA2.txt"

with open(ruta_archivo, 'r') as f:
    contenido = f.read()
    print(contenido)
yr9zkbsy

yr9zkbsy1#

消息“Process finished with exit code 0”表示您的代码已完成运行,没有任何错误。但是,这并不一定意味着Excel文件已成功生成或保存在预期位置。
在代码中,您将Excel文件保存到TXT文件所在的同一目录。如果该目录不存在或文件路径不正确,Excel文件将不会保存到预期位置。
您可以尝试在写入Excel文件之前添加一个检查以验证目录是否存在,如果不存在,则使用os.makedirs()函数创建目录。

import pandas as pd 
import os 
import re

ruta_carpeta = r"C:\Users\José\Documents\prueba1_validador"
archivos_txt = [archivo for archivo in os.listdir(ruta_carpeta) if archivo.endswith(".txt")]

df = pd.DataFrame()

for archivo in archivos_txt:
    ruta_archivo = os.path.join(ruta_carpeta, archivo)

    with open(ruta_archivo, "r") as f:
        contenido_archivo = f.readlines()[11:]

    df_archivo = pd.DataFrame([linea.strip().split() for linea in contenido_archivo])

    if re.search(r"24645", archivo):
        df_archivo["Columna"] = "1"
    elif re.search(r"33033", archivo):
        df_archivo["Columna"] = "2"
    elif re.search(r"57375", archivo):
        df_archivo["Columna"] = "3"
    elif re.search(r"38831", archivo):
        df_archivo["Columna"] = "4"
    elif re.search(r"79441", archivo):
        df_archivo["Columna"] = "5"
    elif re.search(r"50025", archivo):
        df_archivo["Columna"] = "6"
    else:
        df_archivo["Columna"] = ""

    df = pd.concat([df, df_archivo], ignore_index=True)

ruta_archivo_excel = os.path.join(ruta_carpeta, "join.xlsx")

# Check if the directory exists, create it if it does not
ruta_carpeta_excel = os.path.dirname(ruta_archivo_excel)
if not os.path.exists(ruta_carpeta_excel):
    os.makedirs(ruta_carpeta_excel)

# Save the Excel file
with pd.ExcelWriter(ruta_archivo_excel) as writer:
    df.to_excel(writer, index=False)

print("Excel file was generated:", ruta_archivo_excel)

如果目录不存在,此代码应创建该目录,并将Excel文件保存到正确的位置。

rta7y2nd

rta7y2nd2#

是的,它没有被生成,因为你在代码中使用了一个本地地址。Pycharm可能没有写入该目录的权限。
要解决此问题,可以尝试使用绝对路径而不是相对路径
尝试使用os.path.abspath(ruta_carpeta)获取目录的绝对路径

import pandas as pd
import os

ruta_carpeta = r"C:\Users\José\Documents\prueba1_validador"

# Get the absolute path of the directory
ruta_carpeta = os.path.abspath(ruta_carpeta)

archivos_txt = [archivo for archivo in os.listdir(ruta_carpeta) if archivo.endswith(".txt")]

filename_to_column = {
    "24645": "1",
    "33033": "2",
    "57375": "3",
    "38831": "4",
    "79441": "5",
    "50025": "6"
}

df = pd.DataFrame()

for archivo in archivos_txt:
    ruta_archivo = os.path.join(ruta_carpeta, archivo)

    # Read the file as a DataFrame
    df_archivo = pd.read_csv(ruta_archivo, sep="\s+", header=None, skiprows=11)

    # Add the column based on the filename
    column = filename_to_column.get(archivo[:5], "")
    df_archivo["Columna"] = column

    df = pd.concat([df, df_archivo], ignore_index=True)

ruta_archivo_excel = os.path.join(ruta_carpeta, "join.xlsx")

with pd.ExcelWriter(ruta_archivo_excel) as writer:
    df.to_excel(writer, index=False)

print("Excel file was generated:", ruta_archivo_excel)

相关问题