我正在尝试使用 Office365-REST-Python-Client 中的示例将文件从一个文件夹移动到另一个文件夹,但它不起作用:
from office365.sharepoint.client_context import ClientContext
from office365.sharepoint.files.move_operations import MoveOperations
from tests import test_team_site_url, test_user_credentials
ctx = ClientContext(test_team_site_url).with_credentials(test_user_credentials)
file_from = ctx.web.get_file_by_server_relative_path(
"Shared Documents/Financial Sample.xlsx"
)
# folder_to = ctx.web.get_folder_by_server_relative_url("Shared Documents")
folder_to = "Shared Documents"
file_to = file_from.move_to_using_path(
folder_to, MoveOperations.overwrite
).execute_query()
print("'{0}' moved into '{1}'".format(file_from, file_to))
移动文件夹或删除文件进展顺利。现在移动文件的程序如何? 谢谢
在你的代码中,
move_to_using_path
方法的使用方式似乎有误,导致无法移动文件。
move_to_using_path
函数应在
file
对象上调用,而不是在
file_to
对象上调用(
file_to
对象实际上在你调用
execute_query
之前并不存在)。
以下是修正后的代码:
from office365.sharepoint.client_context import ClientContext
from office365.sharepoint.files.move_operations import MoveOperations
from tests import test_team_site_url, test_user_credentials
ctx = ClientContext(test_team_site_url).with_credentials(test_user_credentials)
file_from = ctx.web.get_file_by_server_relative_path(
"Shared Documents/Financial Sample.xlsx"
)
folder_to_url = "Shared Documents/Destination Folder" # 使用目标文件夹的完整服务器相对路径
file_from.move_to_using_path(
folder_to_url, MoveOperations.overwrite
).execute_query()
print("File moved successfully!")
说明:
-
目标文件夹路径
: 确保
folder_to_url
变量包含目标文件夹的完整服务器相对路径(例如:"Shared Documents/Destination Folder")。 -
move_to_using_path
调用 : 将move_to_using_path
方法直接在file_from
对象上调用。 -
execute_query()
: 此方法执行实际的移动操作。 - 成功消息 : 移动成功后,打印一条确认消息。
其他注意事项 :
- 确保你拥有足够的权限来移动源文件夹和目标文件夹中的文件。
-
如果目标文件夹中已存在同名文件,请使用
MoveOperations.rename
选项以避免覆盖文件。
如果在修改代码后仍然遇到问题,请提供以下信息以便我提供更精准的帮助:
- 错误消息(如果有)。
-
你正在使用的
Office365-REST-Python-Client
库的版本。 - 你尝试移动的文件类型。