【问题标题】:Append word to input file name for output file name将单词附加到输出文件名的输入文件名
【发布时间】:2014-06-25 13:24:33
【问题描述】:

我正在尝试读取一些数据、处理数据并将结果写入以原始文件名 + 单词“折叠”保存的 CSV。我正在使用

sys.argv 传递输入文件名,并认为我可以创建一个新变量,例如filename = sys.argv[1]+'_folded.csv,但我最终得到了file.csv_folded.csv

如何才能将我的输出文件保存为 file_folded.csv?

简化代码示例:

import sys
import networkx as nx

G = nx.read_edgelist(sys.argv[1], delimitier=',')

fileout = sys.argv[1]+'_folded.csv'
nx.write_edgelist(G, fileout, delimiter=',')

Did you rename the file with the third option?

【问题讨论】:

  • 考虑使用库fileinput,如果您有多个文件,甚至如果您想重写文件,这可以大大简化您的处理。

标签: python file networkx


【解决方案1】:

看起来您已经在命令行参数中指定了filename.csv,因此您想用您的特殊扩展名替换它以执行此操作:

 file_name = sys.argv[1].replace('.csv', '_folded.csv')

【讨论】:

    【解决方案2】:

    拆分文件扩展名,只使用前缀:

    orginal_name = sys.argv[1]
    prefix = orginal_name.rsplit('.')[0]
    fileout = prefix + '_folded.csv'
    

    或者只是从终端传递out 文件名(我更喜欢),例如:

    python program.py file.csv file_folded.csv
    

    然后在代码中只需使用sys.argv[2] 作为out 文件名。

    【讨论】:

      【解决方案3】:

      您可以slice sys.argv[1] 中的 .csv:

      fileout = sys.argv[1][:-3] +'_folded.csv'
      

      【讨论】:

        【解决方案4】:

        要不假设.csv 扩展,请使用os.path.splitext

        name, ext = os.path.splitext(sys.argv[1])
        file_name = name + '_folded' + ext
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2023-03-31
          • 1970-01-01
          • 2018-08-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多