class: center, middle, inverse, title-slide # 当前工作目录 ## cwd ### 吴燕丰 ### 江西财大,金融学院 ### 2022-03-20 --- ### FileNotFoundError <span style='color:red'>FileNotFoundError: </span>[Errno 2] No such file or directory: '作业一素材.txt' ![](FileNotFoundError.png) 解决方法(该例子):选中代码文件,按F5键。详解见后面介绍。 --- ### 当前工作目录(Current Working Directory) **当前工作目录**:代码运行所在的目录 **C**urrent **W**orking **D**irectory: **cwd** ![](cwd.png) --- ### 相对路径 程序代码要引用(读取|写入)一个文件,我们须知道这个文件在哪里。 - 如果这个文件在代码运行所在的目录,也即在**当前工作目录** (**C**urrent **W**orking **D**irectory,简写为**cwd**)里,那么,我们直接使用**文件名字**,代码即可找到该文件。 ```python open('filename.ext') ``` - 如果这个文件在**cwd**的子文件夹,那么,我们可使用相对路径引用: ```python open('./subfolder/filename.ext') ``` - 如果在**cwd**的父文件夹,那么,我们可以使用相对路径引用: ```python open('../filename.ext') ``` - 如果在**cwd**的相邻文件夹,那么,我们可以使用相对路径引用: ```python open('../siblingfolder/filename.ext') ``` --- ### 相对路径—子文件夹 当前文件夹符号:'.',引用子文件夹时,格式如'`./subfolder/filename.ext`' 选中文件,按F5键执行程序文件,即可将**cwd**改成当前文件所在文件夹。 ![](relativepath.png) --- ### 相对路径—父文件夹、相邻文件夹 父文件夹符号:'`..`' ![](parent_and_silbling.png) --- ### 绝对路径 如果这个文件不在**cwd**的子文件夹,那么,一般而言我们需要使用绝对路径。 - Linux 和 Windows 皆可: ```python open('C:/mydir/filename.ext') ``` - 仅限Windows: ```python open('C://mydir//filename.ext') ``` 或 ```python open(r'C:\mydir\filename.ext') ``` 最佳实践(Best Practice):use the `os.path` module functions ```python os.path.join(mydir, myfile) ``` --- ### 如何改变cwd ```python # Python program to change the # current working directory import os # Function to Get the current # working directory def current_path(): print("Current working directory before") print(os.getcwd()) print() # Driver's code, Printing CWD before current_path() ``` ``` ## Current working directory before ## D:\JXUFE\courses\FinancialData\application\current_working_dir_explained ``` .footnote[ 代码来源:https://www.geeksforgeeks.org/change-current-working-directory-with-python/ ] --- ### 如何改变cwd (续) ```python # Python program to change the # current working directory import os # Function to Get the current # working directory def current_path(): print("Current working directory before") print(os.getcwd()) print() # Changing the CWD os.chdir('../') # Printing CWD after current_path() ``` ``` ## Current working directory before ## D:\JXUFE\courses\FinancialData\application ```