首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从out_filename和后缀生成input_filename

从out_filename和后缀生成input_filename
EN

Code Review用户
提问于 2017-03-16 04:46:59
回答 1查看 149关注 0票数 6

我在input_file上做了很多处理步骤。为了避免在每一步都考虑到output_filename,我创建了以下名称生成函数:

代码语言:javascript
复制
def generate_out_file(in_file, suffix='out'):
    body_str = in_file.strip('./')
    flag = '.' in body_str
    _list = body_str.split('.')
    body_list = _list[:-1] if flag else [in_file]
    extension = _list[-1] if flag else 'txt'
    out_file = '.'.join(body_list + [suffix, extension])
    if in_file.startswith('./'):
        out_file = './' + out_file
    if in_file.startswith('../'):
        out_file = '../' + out_file
    return out_file

对我来说很大。你能检查我的代码并帮助我改进它吗?

EN

回答 1

Code Review用户

回答已采纳

发布于 2017-03-16 05:52:24

您可以通过使用os.path.splitext()来显着地简化函数:

代码语言:javascript
复制
import os


def generate_out_file(in_file, suffix='out'):
    """Appends '.out' to an input filename."""
    filepath, file_extension = os.path.splitext(in_file)
    return filepath + "." + suffix + file_extension

演示:

代码语言:javascript
复制
$ ipython3 -i test.py
In [1]: generate_out_file("./file.txt")  # file in a current directory
Out[1]: './file.out.txt'

In [2]: generate_out_file("/usr/lib/file.txt")  # path to a file
Out[2]: '/usr/lib/file.out.txt'

In [3]: generate_out_file("file.txt")  # just a file name
Out[3]: 'file.out.txt'

In [4]: generate_out_file("file")  # no extension
Out[4]: 'file.out'

In [5]: generate_out_file("/usr/lib/file")  # no extension with a path
Out[5]: '/usr/lib/file.out'
票数 5
EN
页面原文内容由Code Review提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codereview.stackexchange.com/questions/157889

复制
相关文章

相似问题

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