How do I modify a filepath using the os.path module?

社会主义新天地 提交于 2019-12-13 20:47:02

问题


My code

import os.path #gets the module

beginning = input("Enter the file name/path you would like to upperify: ")

inFile = open(beginning, "r") 
contents = inFile.read()
moddedContents = contents.upper() #makes the contents of the file all caps


head,tail = os.path.split(beginning) #supposed to split the path
new_new_name = "UPPER" + tail #adds UPPER to the file name
final_name = os.path.join(head + new_new_name) #rejoins the path and new file name

outFile = open(final_name, "w") #creates new file with new capitalized text 
outFile.write(moddedContents)
outFile.close()

I'm just trying to change the file name to add UPPER to the beginning to the file name via os.path.split(). Am I doing something wrong?


回答1:


head from os.path.split doesn't have a trailing slash in the end. When you join the head and new_new_name by concatenating them

head + new_new_name 

you don't add that missing slash, so the whole path becomes invalid:

>>> head, tail = os.path.split('/etc/shadow')
>>> head
'/etc'
>>> tail
'shadow'
>>> head + tail
'/etcshadow'

The solution is to use os.path.join properly:

final_name = os.path.join(head, new_new_name)



回答2:


Change

final_name = os.path.join(head + new_new_name)

to

final_name = head + os.sep + new_new_name


来源:https://stackoverflow.com/questions/23765842/how-do-i-modify-a-filepath-using-the-os-path-module

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!