对于最后一部分#print(new_path),输出为“无”。能否详细解释一下发生此错误的原因。谢谢你。
import os
def rename_files():
file_list = os.listdir(r"C:\Users\NISARG\Desktop\WinPython\prank")
#print(file_list)
saved_path= os.getcwd()
print(saved_path)
new_path= os.chdir(r"C:\Users\NISARG\Desktop\WinPython\prank")
print(new_path)
答案 0 :(得分:5)
os.chdir(r"C:\Users\NISARG\Desktop\WinPython\prank")
new_path = os.getcwd()
print(new_path)
os.chdir
具有副作用,并且始终返回None
。如果您要在chdir
之后使用当前工作目录,则必须提出要求。
答案 1 :(得分:0)
这是因为os.chdir()
不返回任何值。下面是修复程序。
import os
def rename_files():
file_list = os.listdir(r"H:\RishikeshAgrawani\Projects\GenWork\Python3")
#print(file_list)
saved_path= os.getcwd()
print(saved_path) # H:\RishikeshAgrawani\Projects\GenWork\Python3
os.chdir(r"H:\RishikeshAgrawani\Projects")
new_path = os.getcwd()
print(new_path) # H:\RishikeshAgrawani\Projects
rename_files()
答案 2 :(得分:0)
os.chdir()
在所有情况下均返回None
。
如果您想知道程序当前位于哪个目录,则必须调用os.getcwd()
。
此外,如果要确保程序安全地切换回原始工作目录,可以使用contextlib.contextmanager:
import os
from contextlib import contextmanager
path = "/home"
# Save original working directory, assuming its / here
owd = os.getcwd()
@contextmanager
def change_working_directory(directory):
try:
os.chdir(directory)
yield directory
except FileNotFoundError:
yield
finally:
os.chdir(owd)
print("Before context manager: %s" % owd)
with change_working_directory(path) as directory:
print("Inside context manager: %s" % directory)
print("After context manager: %s" % owd)
将显示以下行为:
Before context manager: /
Inside context manager: /home
After context manager: /
上下文管理器说明:
切换到try
块中的目录,对更改后的目录执行某些操作(在这种情况下,只打印它),然后在切换到finally
块中的当前工作目录时上下文管理器退出。如果目录不存在,则会在except
块中引发FileNotFoundError异常,并从生成器中产生None
。