首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何根据输入文件命名输出文件?

如何根据输入文件命名输出文件?
EN

Stack Overflow用户
提问于 2017-03-02 15:36:11
回答 1查看 318关注 0票数 0

我有大约100个输入文件,经过处理后,会生成超过2000个输出文件。我想根据输入文件的名称来命名输出文件。

下面是我运行的命令:

代码语言:javascript
代码运行次数:0
运行
复制
Start cmd /k "G:Path\eachGeo.bat G:\Path\InputGeo\*.csv"

通过执行.bat文件,通过cmd读取输入文件。输出存储在不同的路径中:

代码语言:javascript
代码运行次数:0
运行
复制
outputfilename = 'Path\outputGeo\\' + Time.now.to_i.to_s + 
                 '_' + eachTag[45..54] + '_output.csv'

在上面的代码中,我使用Time.now.to_i.to_s根据当前系统时间命名输出文件。

我想将其更改为输入文件的名称。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-02 15:43:39

通常你会像这样处理它,你使用像File.basename这样的东西来提取原始文件路径的相关部分:

代码语言:javascript
代码运行次数:0
运行
复制
Dir.glob("path/*.csv") do |path|
  CSV.open(path) do |csv_in|
    # ...

    out_path = "output_path/%s_%s.csv" % [
       File.basename(path, ".csv"),
       each_tag[45..54]
    ]

    CSV.open(out_path, "w") do |csv_out|
      # ...
    end
  end
end

这是一个非常简单的例子。我会避免将您的输出文件放在与输入文件相同的目录中,这样您在第二次运行程序时就不会再次错误地读取它们。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42549364

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档