【发布时间】:2018-10-28 07:39:34
【问题描述】:
我正在尝试使用 python3 套接字构建文件传输系统。我有连接并向下发送,但我现在的问题是正在发送的文件必须与程序位于同一目录中,并且当您收到文件时,它只是将文件放入与程序相同的目录中。如何让用户输入要发送的文件的位置并选择要发送到的文件的位置?
【问题讨论】:
-
你有一些示例代码吗?谢谢
标签: python python-3.x file path
我正在尝试使用 python3 套接字构建文件传输系统。我有连接并向下发送,但我现在的问题是正在发送的文件必须与程序位于同一目录中,并且当您收到文件时,它只是将文件放入与程序相同的目录中。如何让用户输入要发送的文件的位置并选择要发送到的文件的位置?
【问题讨论】:
标签: python python-3.x file path
我假设您正在打开文件:
open("filename","r")
如果您不提供绝对路径,则 open 函数将始终默认为相对路径。所以,如果我想打开像 /mnt/storage/dnd/5th_edition.txt 这样的文件,我会有使用:
open("/mnt/storage/dnd/4p5_edition","r")
如果我想将此文件复制到 /mnt/storage/trash/,我也会使用绝对路径:
open("/mnt/storage/trash/4p5_edition","w")
如果相反,我决定使用这个:
open("mnt/storage/trash/4p5_edition","w")
如果当前文件夹中没有名为 mnt 的目录和目录 storage/trash,我会收到 IOError。如果这些文件夹确实存在于我当前的文件夹中,那么它将最终位于 /whatever/the/path/is/to/my/current/directory/mnt/storage/trash/4p5_edition,而不是/mnt/storage/trash/4p5_edition.
【讨论】:
既然你说文件将放在程序所在的同一路径下,下面的代码可能会起作用
import os
filename = "name.txt"
f = open(os.path.join(os.path.dirname(__file__),filename))
【讨论】:
很简单,从用户那里获取路径
subpath = raw_input("File path = ")
print subpath
file=open(subpath+str(file_name),'w+')
file.write(content)
file.close()
我想这就是你所需要的,如果你需要别的东西,请告诉我。
【讨论】:
就像你说的,文件应该在项目的同一个文件夹中,所以你必须替换它,或者定义一个函数,将正确的文件路径返回到你的 open() 函数中,这是你可以使用的一种方式以减少为您的问题兄弟寻找解决方案的时间。
应该是这样的:
import os
filename = "the_full_path_of_the_fil/name.txt"
f = open(os.path.join(os.path.dirname(__file__),filename))
那么您可以使用f 变量的值作为文件所在目录的路径。
【讨论】: