csdn请注意吃相,乱删博客
如图,第一个参数是脚本路径。
补充sys:
sys.argv 命令行参数List,第一个元素是程序本身路径 sys.exit(n) 退出程序,正常退出时exit(0) sys.version 获取Python解释程序的版本信息 sys.maxint 最大的Int值 sys.path 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值 sys.platform 返回操作系统平台名称 sys.stdin 输入相关 sys.stdout 输出相关 sys.stderror 错误相关
补充os:
os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径
os.chdir("dirname") 改变当前脚本工作目录;相当于shell下cd
os.curdir 返回当前目录: ('.')
os.pardir 获取当前目录的父目录字符串名:('..')
os.makedirs('dir1/dir2') 可生成多层递归目录
os.removedirs('dirname1') 若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推
os.mkdir('dirname') 生成单级目录;相当于shell中mkdir dirname
os.rmdir('dirname') 删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname
os.listdir('dirname') 列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
os.remove() 删除一个文件
os.rename("oldname","new") 重命名文件/目录
os.stat('path/filename') 获取文件/目录信息
os.sep 操作系统特定的路径分隔符,win下为"\",Linux下为"/"
os.linesep 当前平台使用的行终止符,win下为"tn",Linux下为"n"
os.pathsep 用于分割文件路径的字符串
os.name 字符串指示当前使用平台。win->'nt'; Linux->'posix'
os.system("bash command") 运行shell命令,直接显示
os.environ 获取系统环境变量
os.path.abspath(path) 返回path规范化的绝对路径
os.path.split(path) 将path分割成目录和文件名二元组返回
os.path.dirname(path) 返回path的目录。其实就是os.path.split(path)的第一个元素
os.path.basename(path) 返回path最后的文件名。如何path以/或结尾,那么就会返回空值。即os.path.split(path)的第二个元素
os.path.exists(path) 如果path存在,返回True;如果path不存在,返回False
os.path.isabs(path) 如果path是绝对路径,返回True
os.path.isfile(path) 如果path是一个存在的文件,返回True。否则返回False
os.path.isdir(path) 如果path是一个存在的目录,则返回True。否则返回False
os.path.join(path1[, path2[, ...]]) 将多个路径组合后返回,第一个绝对路径之前的参数将被忽略
os.path.getatime(path) 返回path所指向的文件或者目录的最后存取时间
os.path.getmtime(path) 返回path所指向的文件或者目录的最后修改时间
argparse模块
import argparse args = argparse.ArgumentParser()ArgumentParse类
官方文档说的已经很清楚了:
Keyword Arguments:
- prog – 程序的名称 (default: sys.argv[0])
- usage – 用法消息(默认值:从参数自动生成)
- description – 程序功能的描述(–help出来那玩意儿)
- epilog – 参数描述后面的文本
- parents – 应该将其参数复制到此解析器中的解析器
- formatter_class – 用于打印帮助消息的HelpFormatter类
- prefix_chars – 命令的前缀,默认是-
- fromfile_prefix_chars – Characters that prefix files containing
additional arguments - argument_default – 所有参数的默认值
- conflict_handler – String indicating how to handle conflicts
- add_help --是否增加-h/-help选项 (default: True)
- allow_abbrev – Allow long options to be abbreviated unambiguously
def add_argument(
self,
*name_or_flags: Text,
action: Union[Text, Type[Action]] = ...,
nargs: Union[int, Text] = ...,
const: Any = ...,
default: Any = ...,
type: Union[Callable[[Text], _T], Callable[[str], _T], FileType] = ...,
choices: Iterable[_T] = ...,
required: bool = ...,
help: Optional[Text] = ...,
metavar: Optional[Union[Text, Tuple[Text, ...]]] = ...,
dest: Optional[Text] = ...,
version: Text = ...,
**kwargs: Any,
) -> Action: ...
- name or flags - 指定参数的形式,一般就写两个,一个短参数,一个长参数
- type - 指定类型,type = int
- help - 设置这个选项的帮助信息
- dest - 指定将参数解析到哪,解析后可以通过.取值
- metavar - 参数的名字,在显示帮助信息时才用到
- choices - 设置参数值的范围
- nargs - 指定这个参数后面的value有多少个,+表示至少一个,?表示一个或0个,可以写一个ini值代表要几个参数
- required - 是否必传True/False
import argparse
import os
args = argparse.ArgumentParser()
args.add_argument("-f","--file",required=True,choices=os.listdir(os.getcwd()),dest='file')
res = args.parse_args()
print(res.file)
Go
os.Args
package main
import (
"fmt"
"os"
)
//os.Args demo
func main() {
//os.Args是一个[]string
if len(os.Args) > 0 {
for index, arg := range os.Args {
fmt.Printf("args[%d]=%vn", index, arg)
}
}
}
//$ ./args_demo a b c d
args[0]=./args_demo
args[1]=a
args[2]=b
args[3]=c
args[4]=d
os.Args是一个存储命令行参数的字符串切片,它的第一个元素是执行文件的名称。
flag包flag包支持的命令行参数类型有bool、int、int64、uint、uint64、float float64、string、duration。
| flag参数 | 有效值 |
|---|---|
| 字符串flag | 合法字符串 |
| 整数flag | 1234、0664、0x1234等类型,也可以是负数。 |
| 浮点数flag | 合法浮点数 |
| bool类型flag | 1, 0, t, f, T, F, true, false, TRUE, FALSE, True, False。 |
| 时间段flag | 任何合法的时间段字符串。如”300ms”、”-1.5h”、”2h45m”。 合法的单位有”ns”、”us” /“µs”、”ms”、”s”、”m”、”h”。 |
返回的是该类型的指针。
flag.Type(flag名, 默认值, 帮助信息)*Type
name := flag.String("name", "张三", "姓名")
age := flag.Int("age", 18, "年龄")
married := flag.Bool("married", false, "婚否")
delay := flag.Duration("d", 0, "时间间隔")
flag.TypeVar()
flag.TypeVar(Type指针, flag名, 默认值, 帮助信息) var name string var age int var married bool var delay time.Duration flag.StringVar(&name, "name", "张三", "姓名") flag.IntVar(&age, "age", 18, "年龄") flag.BoolVar(&married, "married", false, "婚否") flag.DurationVar(&delay, "d", 0, "时间间隔")flag.Parse()
通过以上两种方法定义好命令行flag参数后,需要通过调用flag.Parse()来对命令行参数进行解析。
支持的命令行参数格式有以下几种:
-flag xxx (使用空格,一个-符号) --flag xxx (使用空格,两个-符号) -flag=xxx (使用等号,一个-符号) --flag=xxx (使用等号,两个-符号)
flag.Args() 返回命令行参数后的其他参数,以[]string类型 flag.NArg() //返回命令行参数后的其他参数个数 flag.NFlag() //返回使用的命令行参数个数



