【问题标题】:Python String to BSTRPython 字符串到 BSTR
【发布时间】:2011-12-04 08:04:22
【问题描述】:

我在 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, None, None, None, 0, -2147467259), None)

【问题讨论】:

    标签: python com bstr


    【解决方案1】:

    由于您使用的是 Python 2.x,我相信您只需要使用 unicode 而不是 strwin32com 将完成剩下的工作。但是,我希望win32com 会自动为您将str 转换为unicode

    你应该这样写:

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

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

    【讨论】:

      猜你喜欢
      • 2012-09-19
      • 1970-01-01
      • 2014-11-06
      • 1970-01-01
      • 2013-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-31
      相关资源
      最近更新 更多