Ich verwende das Tool ac2git, um mein Accurev-Depot in das git-Repository zu konvertieren. Ich stehe vor einem Problem, wenn die os.walk() - Funktion in der Python-Datei ausgeführt wird. Da mein Projekt einen ziemlich komplizierten Erstellungspfad hat, habe ich Dateien verschachtelt, die eine Pfadlänge haben, die die Beschränkung von 260 auf Windows 7 überschreitet. Ich habe versucht, die von microsoft support bereitgestellten Workarounds zu verwenden, aber es löst den Fehler nicht. Ich bekomme immer noch den Fehler [Winerror 3]: Datei nicht gefunden, obwohl es tatsächlich vorhanden ist, aber aufgrund der Längenbeschränkung nicht zugegriffen werden kann. Verwenden der Pfaderweiterung \? Für Windows 7 mit Python-Skript
Dies ist ein Teil des Codes im ac2git.py Skript:
def PreserveEmptyDirs(self):
preservedDirs = []
for root, dirs, files in os.walk(self.gitRepo.path, topdown=True):
for name in dirs:
path ="\\\\?\\"+ToUnixPath(os.path.join(root, name))
# Preserve empty directories that are not under the .git/ directory.
if git.GetGitDirPrefix(path) is None and len(os.listdir(path)) == 0:
filename = os.path.join(path, '.gitignore')
with codecs.open(filename, 'w', 'utf-8') as file:
#file.write('# accurev2git.py preserve empty dirs\n')
preservedDirs.append(filename)
if not os.path.exists(filename):
logger.error("Failed to preserve directory. Couldn't create '{0}'.".format(filename))
return preservedDirs
def ToUnixPath(path):
rv = SplitPath(path)
if rv is not None:
if rv[0] == '/':
rv = '/' + '/'.join(rv[1:])
else:
rv = '/'.join(rv)
return rv
def SplitPath(path):
rv = None
if path is not None:
path = str(path)
rv = []
drive, path = os.path.splitdrive(path)
head, tail = os.path.split(path)
while len(head) > 0 and head != '/' and head != '\\': # For an absolute path the starting slash isn't removed from head.
rv.append(tail)
head, tail = os.path.split(head)
if len(tail) > 0:
rv.append(tail)
if len(head) > 0: # For absolute paths.
rv.append(head)
if len(drive) > 0:
rv.append(drive)
rv.reverse()
return rv
ich angehängt habe die „\\? \“, Um für längere Wegstrecken zu ermöglichen, aber jetzt bekomme ich diesen Fehler:
Ich bin neu bei Python und ich bin nicht sehr sicher, was ist der richtige Ansatz, um es anzugehen. Ich muss nur weiterhin Windows 7 verwenden. Irgendwelche Vorschläge, wenn dieses Problem anders gelöst werden kann?
Bitte korrigieren Sie Ihre Einrückung. Was passiert, wenn Sie den Pfadanfang zu \\? \ Statt \\\\? \ Aktualisieren. – rfkortekaas
Derselbe Fehler tritt auf. –
Warum haben Sie auch 3 Schrägstriche nach c:? Es sollte eins sein. – rfkortekaas