show | version | enable_checker |
---|---|---|
step |
1.0 |
true |
- 上次研究了细水长流
- 读取文件流
- 一行一行流出来
- 而且可以通过 input()函数
- 动态选择具体打开的文件
- 如果我要选择的文件不在当前目录怎么办呢?🤔
- 首先要确保有个文件
- 建立一个 o9z.txt
- 里面写上 oeasy
- 可以的
- 没有报错
- 可以使用相对路径吗?
- 文件位置路径与当前位置是一样的
- 这样子可以打开文件
- 没有报错
- 那我怎么知道当前路径呢?
- 搜索呀
- 应该是os包里面可以查看当前的路径位置
- os是什么意思呢?
-
os 就是操作系统
-
他可以通过函数调用操作系统来获得一些信息
-
查看当前目录
- os.getcwd()
- Current Working Directory
- 当前工作路径
-
切换当前目录
- os.chdir()
- Change Directory
- 可以切换到指定的目录
- 我们重开一下游乐场
- os的cwd会重置
- 会回到~
- 可以把文件名当做命令的参数么?
- 就像
- python3 open_file.py oeasy.txt
- 找到例子
- 然后先做实验
- 照猫画虎
#!/usr/bin/python3
import sys
print("Number of Arguments:",len(sys.argv))
print("Argument List",sys.argv)
print("Current File:",sys.argv[0])
- 引入的包名为 sys
- 意思是 system 系统
- 通过这个包
- 我们可以让 py 文件获得相应参数
- 比如
python3 a.py b
中 - python3 是命令
- a.py、b 都是参数(argument)
- w|!python3 % asdf asdf adfa
- 试验成功
- 如果我让这个 python 文件成为可执行文件呢?
- 直接运行也是可以使用的
- 下面把命令行参数和读写整合起来
#!/usr/bin/python3
import sys
print("Current File:",sys.argv[1])
s_file = sys.argv[1]
f = open(s_file)
s_name = f.readline().replace("\n","")
print("Hello ",s_name,"!Welcome to file io")
f.close()
:w | !python3 % oeasy.txt
- 如果修改oeasy.txt内容
- 会改变程序运行结果么?
- 修改被读取的文本
- 真的在读取文件啊!!!
- 如果我要把读出来的人名变成红色
- 应该怎么办?
#!/usr/bin/python3
import sys
print("Current File:",sys.argv[1])
s_file = sys.argv[1]
f = open(s_file)
s_name = f.readline().replace("\n","")
print("Hello \033[41m",s_name,"\033[0m!Welcome to file io")
f.close()
- o2z 后面有一个不该有的空格
- Hello 和 o2z 之间有两个空格
- 为什么?
- help(print)
- 默认的分隔符
- sep = " "
- 是空格
print("Hello \033[41m",s_name,"\033[0m!Welcome to file io",sep="")
- 把默认分隔符设置为没有分隔符
- 成功
- 这次研究了 python3 执行的当前目录
- 修改当前目录
- 命令行参数
- 还通过命令行参数从文件读取人名
- 然后让人名变红
- 并解决 print 中分隔符加空格式的时候用
- sep = ""
- 可以读出cowsay中所有的动物么?🤔
- 下次再说 👋