由于某种原因,这些代码将文件保存到内存地址而不是指定的路径Oo,任何人如何解决这个问题:)
def save_csv(self, path, trend_name):
fileName = "~/Videos" + "data" + ".csv"
with open(fileName, mode='wb') as f:
f.write(self.decode_data.encode('utf8'))
这是Pudb输出:
Return: NoneType
absolute_import: instance
build_opener: <function build_opener at 0xb6965d14>
CookieJar: cookielib.CookieJar
copy: <module 'copy' from '/usr/lib/python2.7/copy.pyc'>
csv: <module 'csv' from '/usr/lib/python2.7/csv.pyc'>
datetime: <type 'datetime.datetime'>
expanduser: <function expanduser at 0xb750be2c>
HTTPCookieProcessor: urllib2.HTTPCookieProcessor
json: <module 'json' from '/usr/lib/python2.7/json/__init__.pyc'>
logging: <module 'logging' from '/usr/lib/python2.7/logging/__init__.pyc'>
open: <built-in function open>
parse_data: <function parse_data at 0xb6a0c144>
print_function: instance
pyGTrends: <class '__main__.pyGTrends'>
quote: <function quote at 0xb6befed4>
re: <module 're' from '/usr/lib/python2.7/re.pyc'>
requests: <module 'requests' from '/home/lk/.local/lib/python2.7/site-packages/requests/__init__.pyc'>
StringIO: <built-in function StringIO>
sys: <module 'sys' (built-in)>
unicode_literals: instance
urlencode: <function urlencode at 0xb6beff44>
UserAgent: <class 'fake_useragent.fake.UserAgent'>
答案 0 :(得分:0)
正如评论中提到的那样,你应该像这样直接使用路径:
fileName = "home/<username>/Videos/" + "data" + ".csv"
因为只有bash会将~
扩展为完整的home/<username>
路径。
此外,它使用内存,但是你不知道它写在哪里,即~/Videos
。所以是的,它被保存了,但不是在你想要的地方。
类似的可能是:
with open('file.txt', 'wb')
你知道它会保存在哪里吗?在文件夹中,您打开解释器,而不是在main.py
所在的文件夹中。并且通过这种方式,您可能认为文件&#34;未被保存&#34;,但实际上它是。如果有文件夹~
和文件Videos...
或整个文件名为~/Videos...
同样expanduser()
将为您解决此问题,因为另一个答案是提及+确保您拥有正确的路径并且您没有留下任何内容,请使用os.path.join()
。
示例:
from os.path import join
with open(join('/home/<username>', 'Videos', 'data.csv'), mode='wb') as f:
f.write('test')
答案 1 :(得分:0)
将~
转换为主路径的是shell。但是,Python确实有自己的功能,os.path.expanduser()
:
from os.path import expanduser
def save_csv(self, path, trend_name):
fileName = expanduser("~/Videos/data.csv")
with open(fileName, "wb") as f:
f.write(self.decode_data.encode('utf8'))