zoukankan      html  css  js  c++  java
  • python 代码格式化工具:pep8ify

    资料: https://github.com/spulec/pep8ify

    安装

    $ pip install pep8ify

    用法

    Usage: 2to3 [options] file|dir ...
    
    Options:
      -h, --help            show this help message and exit
      -d, --doctests_only   Fix up doctests only
      -f FIX, --fix=FIX     Each FIX specifies a transformation; default: all
      -j PROCESSES, --processes=PROCESSES
                            Run 2to3 concurrently
      -x NOFIX, --nofix=NOFIX
                            Prevent a transformation from being run
      -l, --list-fixes      List available transformations
      -p, --print-function  Modify the grammar so that print() is a function
      -v, --verbose         More verbose logging
      --no-diffs            Don't show diffs of the refactoring
      -w, --write           Write back modified files
      -n, --nobackups       Don't write backups for modified files
      -o OUTPUT_DIR, --output-dir=OUTPUT_DIR
                            Put output files in this directory instead of
                            overwriting the input files.  Requires -n.
      -W, --write-unchanged-files
                            Also write files even if no changes were required
                            (useful with --output-dir); implies -w.
      --add-suffix=ADD_SUFFIX
                            Append this string to all output filenames. Requires
                            -n if non-empty.  ex: --add-suffix='3' will generate
                            .py3 files.

    修复的问题

    Available transformations for the -f/--fix option:
    blank_lines
    compound_statements
    extraneous_whitespace
    imports_on_separate_lines
    indentation
    maximum_line_length
    missing_newline
    missing_whitespace
    tabs
    trailing_blank_lines
    trailing_whitespace
    whitespace_around_operator
    whitespace_before_inline_comment
    whitespace_before_parameters

    具体使用方法

    假设当前路径下有一个文件夹a,a目录下有一个源文件a.py,a.py内容如下:

    import math, sys;
    
    def example1():
        ####This is a long comment. This should be wrapped to fit within 72 characters.
        some_tuple=(   1,2, 3,'a'  );
        some_variable={'long':'Long code lines should be wrapped within 79 characters.',
        'other':[math.pi, 100,200,300,9876543210,'This is a long string that goes on'],
        'more':{'inner':'This whole logical line should be wrapped.',some_tuple:[1,
        20,300,40000,500000000,60000000000000000]}}
        return (some_tuple, some_variable)
    def example2(): return {'has_key() is deprecated':True}.has_key({'f':2}.has_key(''));
    class Example3(   object ):
        def __init__    ( self, bar ):
         #Comments should have a space after the hash.
         if bar : bar+=1;  bar=bar* bar   ; return bar
         else:
                        some_string = """
                           Indentation in multiline strings should not be touched.
    Only actual code should be reindented.
    """
                        return (sys.path, some_string)

    1. 查看需要更改的diff信息。

    备注:该操作执行之后,不会有任何真正意义上的变化,只是在终端打印出一些源文件和更改之后的文件的diff信息,源文件并没有变化。

    D:Python3Scriptspep8ify.exe a

    2. 格式化文件/路径

    备注: 该操作会在终端打印出源文件和更改之后的文件的diff信息,同时更新源文件,并且在路径下生成一个“文件名.bak”文件。

    执行如下命令:

    D:Python3Scriptspep8ify.exe -w a

    可以看到a.py内容更新,a路径下有一个a.py.bak文件,a.py.bak的内容为源文件内容。

    3. 不生成bak文件

    -n 选项不会生成备份。

    如果没有使用版本控制系统,不要使用这个选项。

    D:Python3Scriptspep8ify.exe -w -n a

    4. 应用指定的修复

    -f 可以指定应用的特定修复

    默认是all,但是all不包括“maximum_line_length”。

    如果想应用 all + maximum_line_length:

    $ pep8ify -f all -f maximum_line_length example.py

  • 相关阅读:
    linux驱动开发学习一:创建一个字符设备
    如何高效的对有序数组去重
    找到缺失的第一个正整数
    .NET不可变集合已经正式发布
    中国人唯一不认可的成功——就是家庭的和睦,人生的平淡【转】
    自己动手搭建 MongoDB 环境,并建立一个 .NET HelloWorld 程序测试
    ASP.NET MVC 中如何用自定义 Handler 来处理来自 AJAX 请求的 HttpRequestValidationException 错误
    自己动手搭建 Redis 环境,并建立一个 .NET HelloWorld 程序测试
    ServiceStack 介绍
    一步一步实战扩展 ASP.NET Route,实现小写 URL、个性化 URL
  • 原文地址:https://www.cnblogs.com/miniren/p/5082336.html
Copyright © 2011-2022 走看看