Python 2.7 将路径与固定字符串进行比较

Python 2.7 将路径与固定字符串进行比较,python-2.7,Python 2.7,我正在编写一个脚本,从mp4文件的内容构建nfo文件。我正在使用itunes.xml文件查找播放列表中的项目,然后搜索xml以将项目编号转换为位置。那很好。我的问题是当我尝试查看“路径”和“MOVIEFOLDER”是否匹配时。从屏幕上看,它看起来像是这样,但从编程角度看,它不是 这是我的密码: import os, sys, subprocess, shutil, ftplib from subprocess import call import xml.etree.ElementTree as

我正在编写一个脚本,从mp4文件的内容构建nfo文件。我正在使用itunes.xml文件查找播放列表中的项目,然后搜索xml以将项目编号转换为位置。那很好。我的问题是当我尝试查看“路径”和“MOVIEFOLDER”是否匹配时。从屏幕上看,它看起来像是这样,但从编程角度看,它不是

这是我的密码:

import os, sys, subprocess, shutil, ftplib
from subprocess import call
import xml.etree.ElementTree as ET
MOVIEFOLDER="/Volumes/Data/Media/Movies"
ITUNESPLAYLIST = "Movies,"
ITUNESFOLDER = "/Volumes/Macintosh HD/Users/brianjhille/Music/iTunes"
ITUNESFILENAME = "/iTunes Music Library.xml"
fullitunesfilename = os.path.join(ITUNESFOLDER + ITUNESFILENAME)
if "," in ITUNESPLAYLIST:
    ITUNESPLAYLIST = ITUNESPLAYLIST.split(",")
def getplaylistcontents():
    mediaintlist = None
    totalplaylists = len(playlistdata)
    for z in range(0, totalplaylists):
        strings = map(lambda x: x.text, playlistdata[z].findall('string'))  
        integers = map(lambda x: x.text, playlistdata[z].findall('array/dict/integer'))
        for playlist in ITUNESPLAYLIST:
            if playlist in strings:
                if mediaintlist is None:
                    mediaintlist = integers
                else:
                    mediaintlist = mediaintlist + integers
    if mediaintlist is not None:
        movielist = None
        totalelements = len(mediadata)
        for z in range(0, totalelements):
            strings = map(lambda x: x.text, mediadata[z].findall('string'))
            keys = map(lambda x: x.text, mediadata[z].findall('key'))
            integers = map(lambda x: x.text, mediadata[z].findall('integer'))
            #print "iTunes: " + str(strings[-1].replace("%20", " ").replace("file://", ""))
            for mediaint in mediaintlist:
                if str(mediaint) in integers:
                    if ("Movie" in keys):
                        if movielist is None:
                            movielist = str(strings[-1].replace("%20", " ").replace("file://", ""))
                        else:
                            movielist = movielist + "," + str(strings[-1].replace("%20", " ").replace("file://", ""))
        if movielist is not None:
            if "," in movielist:
                movielist = movielist.split(",")
                movielist.sort(key = lambda k : k.lower())
        return movielist            
    else:
        print ""
        print "Movie playlist(s) not found.  Unable to sync movies."

with open(fullitunesfilename, 'r') as itunes:
    tree = ET.parse(itunes)
    root = tree.getroot()
print "     Getting media list"
mediadata = tree.findall('dict/dict/dict')
print "     Getting playlist information"
playlistdata = tree.findall('dict/array/dict')
moviesync = getplaylistcontents()
print "     Getting list of TV Shows to sync"
syncfolder = None
for file in moviesync:
    path, name = os.path.split(file)
    print path
    print MOVIEFOLDER
    if path is MOVIEFOLDER:
        print "Match? Yes"
    else:
        print "Match? Nope"
以下是我的输出:

/Volumes/Data/Media/Movies
/Volumes/Data/Media/Movies
Match? Nope
/Volumes/Data/Media/Movies
/Volumes/Data/Media/Movies
Match? Nope
/Volumes/Data/Media/Movies
/Volumes/Data/Media/Movies
Match? Nope
真正有趣的是,如果我使用os.walk(MOVIEFOLDER)并将路径与MOVIEFOLDER进行比较,它就会工作


为什么这场比赛不成功?它们在屏幕上看起来完全一样。我试着把这两个都放在str()中,但都没有用。有什么想法吗?

您使用的是
路径是..
而不是
路径==…
。这不是你的问题吗?就是这个!!!非常感谢你,我当时正在拔头发。话虽如此,使用“is”和“==”之间的区别是什么?除了一种方法有效而另一种方法无效这一点之外。英雄联盟也许威尔会对此感兴趣:您使用的是
path is..
而不是
path==…
。这不是你的问题吗?就是这个!!!非常感谢你,我当时正在拔头发。话虽如此,使用“is”和“==”之间的区别是什么?除了一种方法有效而另一种方法无效这一点之外。英雄联盟也许威尔会对此感兴趣: