Python OSError:[Errno 18]无效的跨设备链接
我正在使用django 1.6.5和python 2.7。 我的应用程序中有导入功能,但出现错误:Python OSError:[Errno 18]无效的跨设备链接,python,django,database,settings,backend,Python,Django,Database,Settings,Backend,我正在使用django 1.6.5和python 2.7。 我的应用程序中有导入功能,但出现错误: OSError: [Errno 18] Invalid cross-device link 我对这部分代码有问题: os.rename(db_temp, settings.DATABASES['bookmat']['NAME']) 设置中的代码: 'bookmat': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': '/my_
OSError: [Errno 18] Invalid cross-device link
我对这部分代码有问题:
os.rename(db_temp, settings.DATABASES['bookmat']['NAME'])
设置中的代码:
'bookmat': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': '/my_projects/book/db/bookmat.sqlite3',
},
我认为只有当源和目标名称位于同一文件系统上时,重命名才有效。你可能有不同的坐骑。否则你就会犯这个错误。您可以通过复制和删除实现相同的效果
希望它对操作系统有所帮助。重命名仅在源和目标位于同一文件系统上时有效。你应该改为使用
shutil.move
。什么是db_temp valuedb_temp=settings.DATABASES[db_temp\u name]['name']
@iklinacinitial db_temp value as string当我试图将Docker容器中的文件夹中的内容移动到卷时,我的版本是shutil.move()实际上是根据os.rename()实现的。还有其他替代方法吗?我正在使用shutil.move
,但仍然会出现这个错误,正如Kilian所说的shutil.move()
在不同的文件系统中会出现与os.rename()相同的错误。最容易使用的是shutil.copy()
和os.remove()
。python3中的shutil.move
通过使用copy和delete正确处理外部文件系统,per.@kravietz在我的例子中,它不能正确处理它,至少在python3上,它有一个常规的ext4和一个安装了rclone
的文件夹。