它一直在尝试和错误,似乎不能得到我想要的。
我正在访问一个API来获取一些信息。不幸的是,它是唯一一个获取该信息并执行此操作的API,它下载文件的二进制内容并对其命名:
folder\filename.whatever
,即test\purpleMonkeyTest.docx
有更多的信息来自呼叫,但有这一行:
Saved the binary content to: /home/user/python/test\purpleMonkeyTest.docx
有些文件包含"
或其他特殊字符,因此我不能简单地获取文件名并将其作为脚本的一部分删除,因为我不知道要转义什么。
因此,我的目标是剥离这条线,并获得:
/home/user/python/test\purpleMonkeyTest.docx
然后只获取:
/home/user/python/test\pu
然后:
os.remove "/home/user/python/test\pu"*
我认为通配符应该适用于所有人,除非有更好的方法。所有保存的文件都有字符\
,所以我在\
之前得到了所有东西,但在那之后我也想要一两个字符。
这是我尝试过的:
def fileName(itemID):
import fnmatch
details = itemDetails(itemID, True) # get item id and file details
filepath = matchPattern((details), 'Saved the binary content to: *')
filepath = (filepath).split('\\')[0]
print(filepath)
#os.remove(re.escape(filepath))
return (matchPattern((details), 'Binary component: *'))
def matchPattern(details, pattern):
import fnmatch
return (fnmatch.filter((details), pattern)[0].split(": " ,1)[1])
输出:
/home/user/python/test
purpleMonkeyTest.docx
我确实想要稍后的文件名:这实际上是我的主要目标。API会自动下载这个该死的文件。
编辑:
下面的答案适用于获得我想要的字符。但是,Os remove不会删除文件。
OSError: [Errno 2] No such file or directory: '/home/user/python/test\\Re*'
使用glob成功地让它工作,我猜os.remove不支持Wilds。
files = glob.glob((filepath)+"*")
for file in files:
os.remove(file)
谢谢你的帮助!!
https://stackoverflow.com/questions/51332316
复制相似问题