Python字符串到BSTR

时间:2011-10-10 08:16:13

标签: python com bstr

我在Windows 7上使用iTunes COM界面。 方法iTunes.CurrentTrack.AddArtworkFromFile(path)要求路径为BSTR类型。

我从一些研究中了解到BSTR是一种C ++ / Visual Basic数据类型,意味着基本字符串。

有没有办法将python ascii字符串转换为BSTR?

代码:

import urllib
from BeautifulSoup import BeautifulSoup
import re
import win32com.client
import sys





iTunes = win32com.client.gencache.EnsureDispatch("iTunes.Application")

cTrackName = iTunes.CurrentTrack.Name
cArtist = iTunes.CurrentTrack.Artist
cAlbum = iTunes.CurrentTrack.Album

print cAlbum + cArtist + cTrackName
url = 'http://www.last.fm/music/'+cArtist+'/'+cAlbum
albumPage = urllib.urlopen(url).read()
soup = BeautifulSoup(albumPage)
s =  soup.prettify()
z = re.compile('.*<img  width="174" src="(.*)" class="art"  id="albumCover" itemprop="image" class="albumCover coverMega"  />')
p = re.findall(z,s)
print p
urllib.urlretrieve(p[0],'a.png')
a = urllib.quote('file://localhost/C:/Users/ArchAngel/Desktop/a.png')
iTunes.CurrentTrack.AddArtworkFromFile('file://localhost/C:/Users/ArchAngel/Desktop/a.png')
#print binascii.a2b_uu('sadsaffas')
iTunes.CurrentTrack.AddArtworkFromFile(b'C:\Users\ArchAngel\Desktop\a.png')

错误:pywintypes.com_error:(-2147352567,'异常发生。',(0,无,无,无,0,-2147467259),无)

1 个答案:

答案 0 :(得分:3)

由于您使用的是Python 2.x,我认为您只需使用unicode而不是strwin32com将完成其余工作。但是,我希望win32com能够自动将str转换为unicode

你应该这样写:

iTunes.CurrentTrack.AddArtworkFromFile(u'file://localhost/C:/Users/ArchAngel/Desktop/a.png')

如果这不起作用,那么我认为你的问题出在其他地方。