模块;输入输出;file文件操作;import

模块

把一些定义存放在文件中,为一些脚本或者交互式的解释器实例使用,这个文件被称为模块。
模块是一个包含所有你定义的函数和变量的文件,其后缀名是.py。模块可以被别的程序引入,以使用该模块中的函数等功能。这也是使用 python 标准库的方法。

import 语句

想使用 Python 源文件,只需在另一个源文件里执行 import 语句,语法如下:

import module1[, module2[,... moduleN]

如想要导入模块 support,需要把命令放在脚本的顶端:

def print_func( par ):
    print ("Hello : ", par)
    return

引入support模块:

# 导入模块
import support
 
# 现在可以调用模块里包含的函数了
support.print_func("Runoob")

经常使用一个函数可以给它赋给一个本地的名称:

>>> fib = fibo.fib
直接调用赋值之后的名字就可以
>>> fib(500)

from…import语句

Python 的 from 语句让你从模块中导入一个指定的部分到当前命名空间中,语法如下:

from modname import name1[, name2[, ... nameN]]

比如,要导入模块fibo的fib函数:

from fibo import fib, fib2
>>> fib(500)

这不会把整个fibo模块导入到当前的命名空间中,只会把fibo的fib引进来。

from modname import *,该语句会导入模块的所有项目,不建议多次使用。

__name__属性

一个模块被另一个程序第一次引入时,其主程序将运行。如果我们想在模块被引入时,模块中的某一程序块不执行,我们可以用__name__属性来使该程序块仅在该模块自身运行时执行。

# Filename: using_name.py

if __name__ == '__main__':
   print('程序自身在运行')
else:
   print('我来自另一模块')

输出

程序自身在运行
>>> import using_name
我来自另一模块

每个模块都有一个__name__属性,当其值是’main’时,表明该模块自身在运行,否则是被引入。

说明:namemain 底下是双下划线。

dir(函数)

内置的函数 dir() 可以找到模块内定义的所有名称。以一个字符串列表的形式返回:

>>> import fibo, sys
>>> dir(fibo)
['__name__', 'fib', 'fib2']

如果没有给定参数,那么 dir() 函数会罗列出当前定义的所有名称。

包是一种管理 Python 模块命名空间的形式,采用"点模块名称"。
比如一个模块的名称是 A.B, 那么他表示一个包 A中的子模块 B 。
采用点模块名称这种形式也不用担心不同库之间的模块重名的情况。

sound/                          顶层包
      __init__.py               初始化 sound 包
      formats/                  文件格式转换子包
              __init__.py
              wavread.py
              wavwrite.py
              aiffread.py
              aiffwrite.py
              auread.py
              auwrite.py
              ...
      effects/                  声音效果子包
              __init__.py
              echo.py
              surround.py
              reverse.py
              ...
在导入一个包的时候,Python 会根据 sys.path 中的目录来寻找这个包中包含的子目录。

目录只有包含一个叫做 __init__.py 的文件才会被认作是一个包,主要是为了避免一些滥俗的名字(比如叫做 string)不小心的影响搜索路径中的有效模块。

最简单的情况,放一个空的 :file:__init__.py就可以了。当然这个文件中也可以包含一些初始化代码

用户可以每次只导入一个包里面的特定模块,比如:

import sound.effects.echo

这将会导入子模块:sound.effects.echo。 他必须使用全名去访问:

sound.effects.echo.echofilter(input, output, delay=0.7, atten=4)

另一种方法:

from sound.effects import echo

这就不用加乱七八糟的前缀了

echo.echofilter(input, output, delay=0.7, atten=4)

注意当使用** from package import item** 这种形式的时候,对应的 item 既可以是包里面的子模块(子包),或者包里面定义的其他名称,比如函数,类或者变量。

import 语法会首先把 item 当作一个包定义的名称,如果没找到,再试图按照一个模块去导入。如果还没找到,抛出一个 :exc:ImportError 异常。

反之,如果使用形如** import item.subitem.subsubitem **这种导入形式,除了最后一项,都必须是包,而最后一项则可以是模块或者是包,但是不可以是类,函数或者变量的名字。

从包中导入*

使用 from sound.effects import *。Python 会进入文件系统,找到这个包里面所有的子模块,然后一个一个的把它们都导入进来。但是Windows 是一个不区分大小写的系统。在windows平台上,无法确定一个叫做 ECHO.py 的文件导入为模块是 echo 还是 Echo,或者是 ECHO。
为了解决这个问题,我们只需要提供一个精确包的索引。

导入语句遵循如下规则:如果包定义文件 __init__.py 存在一个叫做 __all__ 的列表变量,
那么在使用 from package import * 的时候就把这个列表中的所有名字作为包内容导入。

__all__ = ["echo", "surround", "reverse"]

这表示当你使用from sound.effects import *这种用法时,你只会导入包里面这三个子模块。
如果 all 真的没有定义,那么使用from sound.effects import *这种语法的时候,就不会导入包 sound.effects 里的任何子模块。他只是把包sound.effects和它里面定义的所有内容导入进来(可能运行__init__.py里定义的初始化代码)

输入输出

输出格式美化

str(): 函数返回一个用户易读的表达形式。
repr(): 产生一个解释器易读的表达形式。
zfill(), 它会在数字的左边填充 0,如下所示:

>>> '12'.zfill(5)
'00012'

str.format()的基本使用如下:

>>> print('{}网址: "{}!"'.format('菜鸟教程', 'www.runoob.com'))
菜鸟教程网址: "www.runoob.com!"


在括号中的数字用于指向传入对象在 format() 中的位置,如下所示:
>>> print('{0} 和 {1}'.format('Google', 'Runoob'))
Google 和 Runoob
>>> print('{1} 和 {0}'.format('Google', 'Runoob'))
Runoob 和 Google

位置及关键字参数可以任意的结合:
>>> print('站点列表 {0}, {1}, 和 {hehe}。'.format('Google', 'Runoob', hehe='Taobao'))
输出:
站点列表 Google, Runoob, 和 Taobao。

可选项 : 和格式标识符可以跟着字段名。 这就允许对值进行更好的格式化。 下面的例子将 Pi 保留到小数点后三位:

>>> import math
>>> print('常量 PI 的值近似为 {0:.3f}。'.format(math.pi))
常量 PI 的值近似为 3.142。

在 : 后传入一个整数, 可以保证该域至少有这么多的宽度。 用于美化表格时很有用。

>>> table = {'Google': 1, 'Runoob': 2, 'Taobao': 3}
>>> for name, number in table.items():
...     print('{0:10} ==> {1:10d}'.format(name, number))
... 
Google     ==>          1
Runoob     ==>          2
Taobao     ==>          3

旧式字符串格式化

% 操作符也可以实现字符串格式化。 它将左边的参数作为类似 sprintf() 式的格式化字符串, 而将右边的代入, 然后返回格式化后的字符串. 例如:

>>> import math
>>> print('常量 PI 的值近似为:%5.3f。' % math.pi)
常量 PI 的值近似为:3.142。

读取键盘输入 input()

str = input("请输入:");
print ("你输入的内容是: ", str)

运行之后显示

输入哈哈哈
在这里插入图片描述

读和写文件

open() 将会返回一个 file 对象,基本语法格式如下:

open(filename, mode)

filename:包含了你要访问的文件名称的字符串值。
mode:决定了打开文件的模式:只读,写入,追加等。所有可取值见如下的完全列表。这个参数是非强制的,默认文件访问模式为只读®。
在这里插入图片描述
实例:

# 打开一个文件
f = open("/tmp/foo.txt", "w")

f.write( "Python 是一个非常好的语言。\n是的,的确非常好!!\n" )

# 关闭打开的文件
f.close()

文件对象的方法

f.read()
为了读取一个文件的内容,调用 f.read(size), 这将读取一定数目的数据, 然后作为字符串或字节对象返回。

size 是一个可选的数字类型的参数。 当 size 被忽略了或者为负, 那么该文件的所有内容都将被读取并且返回。

# 打开一个文件
f = open("/tmp/foo.txt", "r")

str = f.read()
print(str)

# 关闭打开的文件
f.close()

输出:

Python 是一个非常好的语言。
是的,的确非常好!!

f.readline()

f = open("/tmp/foo.txt", "r")

str = f.readline()
print(str)

# 关闭打开的文件
f.close()

输出:

Python 是一个非常好的语言。

f.readlines() 将返回该文件中包含的所有行。

如果设置可选参数 sizehint, 则读取指定长度的字节, 并且将这些字节按行分割。

另一种方式是迭代一个文件对象然后读取每行:

f = open("/tmp/foo.txt", "r")

for line in f:
    print(line, end='')  

# 关闭打开的文件
f.close()

end=’’ 不换行输出空格
f.write()
f.write(string) 将 string 写入到文件中, 然后返回写入的字符数。

f = open("/tmp/foo.txt", "w")

num = f.write( "Python 是一个非常好的语言。\n是的,的确非常好!!\n" )
print(num)

f.close()

输出29

如果要写入一些不是字符串的东西, 那么将需要先进行转换:

f = open("/tmp/foo1.txt", "w")

value = ('www.runoob.com', 14)
s = str(value)
f.write(s)
f.close()

打开foo1.txt文件:

('www.runoob.com', 14)

f.seek
如果要改变文件当前的位置, 可以使用 f.seek(offset, from_what) 函数。

from_what 的值, 如果是 0 表示开头, 如果是 1 表示当前位置, 2 表示文件的结尾,例如:

seek(x,0) : 从起始位置即文件首行首字符开始移动 x 个字符
seek(x,1) : 表示从当前位置往后移动x个字符
seek(-x,2):表示从文件的结尾往前移动x个字符
from_what 值为默认为0,即文件开头。下面给出一个完整的例子

f.close()
当你处理完一个文件后, 调用 f.close() 来关闭文件并释放系统的资源,如果尝试再调用该文件,则会抛出异常。

OS文件/目录方法

os模块提供了非常丰富的方法用来处理文件和目录。

内容来自菜鸟教程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
argparse 模块是 Python 中用于解析命令行参数的标准库。它提供了一个简单而灵活的方式来定义命令行参数,并且可以帮助我们处理输入输出。 在使用 argparse 模块处理输入时,我们可以通过定义命令行参数来接收用户输入的值。例如,我们可以定义一个接收文件路径的参数: ```python import argparse parser = argparse.ArgumentParser() parser.add_argument("filename", help="输入文件的路径") args = parser.parse_args() # 使用用户输入文件路径进行操作 with open(args.filename, 'r') as file: # 在这里进行文件操作 pass ``` 在这个例子中,用户可以通过命令行输入文件的路径,并将其存储在 `args.filename` 变量中。接下来,我们可以使用这个文件路径来进行具体的操作。 对于输出部分,argparse 模块并没有直接提供相关功能,但我们可以使用 Python 的标准输出函数 `print()` 来实现输出。例如: ```python import argparse parser = argparse.ArgumentParser() parser.add_argument("name", help="你的名字") args = parser.parse_args() print("你好,{}".format(args.name)) ``` 在这个例子中,用户通过命令行输入自己的名字,并将其存储在 `args.name` 变量中。然后,我们使用 `print()` 函数将问候语输出到控制台。 argparse 模块还提供了许多其他功能,例如设置参数的默认值、支持多个参数类型、解析可选参数等。通过使用这些功能,我们可以更好地处理输入输出,并使我们的命令行程序更加健壮和易用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值