微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Python由于目录错误而找不到我的文件

如何解决Python由于目录错误而找不到我的文件

所以我有一个功能可以将instagram数据抓取并存储到字典中。我认为我已经正确设置了该功能,但是当我尝试运行打印语句时,我不断收到错误消息,可以找不到我要通过该功能运行的文件

这是我用于安装Google驱动器并设置目录以存储json文件代码。我确认这在我的驱动器中都是正确的。

# Mount data location. Do not edit this cell except as indicated.

# Be sure you have a folder in the root of your Google Drive called APRD6342/Data.
# Data files for the course should be uploaded to that folder.
from pathlib import Path
try:
    from google.colab import drive
    drive.mount('/content/drive')
    datadir = Path('drive/My Drive/APRD6342/Data') # you may edit this location ...
except ModuleNotFoundError:
    datadir = Path('../../Data') # ... but don't change this!!!


INSTAGRAM_DIR = datadir / 'instagram'

这是我的功能

def engagement(filename,follower_count):
    """Return the brand post engagement for the Instagram Metadata file,filename,given follower_count as the number of Instagram followers for
    the brand.

    Returns a decimal engagement rate rounded to 4 decimal places. Python's
    standard `round` function should be used. E.g.:

    >>> engagement('instagram/volvocars.json',volvocars_follower_count)
    0.0125
    """
    with open(datadir / filename) as f:
        for line in f: #for each line in the file
            line_object = json.loads(line) 
            likes = line_object["GraphImages"]["edge_media_preview_like"]["count"] #find count

            if num in likes > 1:
                engagement.append(i) #add count to engagement
            comments = filename["GraphImages"]["edge_media_to_comment"]["count"] #find other count
            if num in comments > 1: 
                engagement.append(i) #add count
            engage_perc = sum(engagement)/follower_count #sum all counts and divide by the number of followers
    return engage_perc

这是我要运行的打印语句和错误

print('Honda:',as_percent(engagement(INSTAGRAM_DIR / 'honda.json',honda_follower_count)))


---> 12     with open(datadir / filename) as f:
     13         for line in f: #for each line in the file
     14             line_object = json.loads(line)

FileNotFoundError: [Errno 2] No such file or directory: 'drive/My Drive/APRD6342/Data/drive/My Drive/APRD6342/Data/instagram/honda.json'

我已经很好地运行了该挂载代码,但是由于某种原因,我的目录正在嵌套自身或其他内容。谢谢!

解决方法

使用调用函数时

print('Honda:',as_percent(engagement(INSTAGRAM_DIR / 'honda.json',honda_follower_count)))

您提供了完整路径,但是随后在函数中,再次添加了路径

 with open(datadir / filename) as f:

仅传递子文件夹instagram和文件名。请注意文档字符串-它们提供'instagram/volvocars.json',因此您需要提供'instagram/honda.json'

,

因此能够找出一种不必使用jsonl文件而只需使用json的方法。正在混淆一些语法。

def engagement(filename,follower_count):
    """Return the brand post engagement for the Instagram metadata file,filename,given follower_count as the number of Instagram followers for
    the brand.

    Returns a decimal engagement rate rounded to 4 decimal places. Python's
    standard `round` function should be used. E.g.:

    >>> engagement('instagram/volvocars.json',volvocars_follower_count)
    0.0125
    """
    engagement = [] #set empty list for like counts
    data = filename #store filename to variable
    with open(data) as f: #save open file as outfile
        parse = json.load(f)
        for n in range(0,200):
            likes = parse["GraphImages"][n]["edge_media_preview_like"]["count"] #find count
            if likes > 1:
                    engagement.append(likes) #add count to engagement
            comments = parse["GraphImages"][n]["edge_media_to_comment"]["count"] #find other count
            if comments > 1: 
                    engagement.append(comments) #add count
            engage_perc = (sum(engagement)/len(range(0,200)))/follower_count #sum all counts and divide by the number of followers
        return round(engage_perc,4)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。