在Python中打开文件时如何重命名文件?

时间:2019-05-24 08:28:58

标签: python iteration string-formatting file-rename

我有以下代码来打开文件并将其另存为.txt。我也正在遍历具有相同文件类型(* .asc)的目录。我只想使用* .asc文件的一部分并将其写入新的.txt文件中,以使其与特定软件兼容。代码本身可以正常工作。但是,TXTfile = open(n + ".txt", 'w')基本上只是将.txt添加到文件中,从而使其成为文本文件。我也想这样简称:

原始文件名: SB-CPT2_Seacalf完全导出到GeODin.asc

在以下代码运行后,

文件名: SB-CPT2_Seacalf完全导出到GeODin.asc.txt

我想要的内容:SB-CPT2.txt 目录中有许多文件,并且所有文件都以“ _”开头。因此,更多文件示例为:

SB-CPT20_Seacalf完全导出到GeODin.asc

SB-CPTOSS01_Seacalf完全导出到GeODin.asc。

我想到了.strip()或.replace()或其他东西,但是我不确定在哪里放置它。我敢肯定有一个简单的方法。我只是没有偶然发现它。

同样,问题是:

我怎么

  1. 遍历具有相似文件名的目录(已解决)
  2. 打开每个(已解决)
  3. 执行我的数据提取(已解决)
  4. 并将其保存为原始文件名中“ _”之前的所有内容的.txt文件? (未回答实际问题)

    导入glob

    listing = glob.glob('./*.asc')
    print listing
    
    # Lesen der ASC Dateien:
    
    for c in range (0,len(listing)):
        ascFile = file(r'{}'.format(listing[c]),'r')
        lines_csv = ascFile.readlines()
        ascFile.close()
        n = listing[c]
        print n
        TXTfile = open(n + ".txt", 'w')
        TXTfile.write("Depth" + "\t" + "qc"+ "\t" + "fs"+ "\t" + "u2"+ "\t" + "qt" + "\n")
        TXTfile.write("m" + "\t" + "MPa"+ "\t" + "MPa"+ "\t" + "MPa"+ "\t" + "MPa" + "\n")
    
        for i in range (62,len(lines_csv)-2): #63 weil die daten ab Zeile 63 (in Pythonzählweise 62) beginnen und bis einschließlich zur 3. letzten Zeile (-2), da CPeT-IT keine komplett leeren Zeilen aktzeptiert
            a= lines_csv[i]
            Depth = str(a[7:15]).strip()
            qc = str(a[25:36]).strip()
            fs= str(a[37:48]).strip()
            u2= str(a[68:80]).strip()
            qt= str(a[91:102]).strip()
    
            if len(Depth) == 0:
                Depth_pass = "-7777"
            else:
                Depth_pass = str(a[7:15]).strip()
    
    
            if len(qc) ==0:
                qc_pass = "-7777"
            else:
                qc_pass = str(a[25:36]).strip()
    
    
            if len(fs) ==0:
                fs_pass = "-7777"
            else:
                fs_pass = str(a[37:48]).strip()
    
            if len(u2) ==0:
                u2_pass = "-7777"
            else:
                u2_pass = str(a[68:80]).strip()
    
            if len(qt) ==0:
                qt_pass = "-7777"
            else:
                qt_pass = str(a[91:102]).strip()
    
            TXTfile.write(Depth_pass +'\t' + qc_pass +'\t'+ fs_pass +'\t'+ u2_pass +'\t'+ qt_pass +'\n')
    
        TXTfile.close()         
    

0 个答案:

没有答案