簡體   English   中英

為什么使用mrjob運行python文件時出現“ WindowsError [Error5]訪問被拒絕”的原因

[英]Why I got “WindowsError [Error5] Access is denied” when run python file using mrjob

我正在嘗試在python文件中使用mrjob並在命令行中運行它,但我一直在獲取錯誤日志,內容是:

C:\Users\Ni\Desktop>python si601lab6_sol.py pg1268.txt
no configs found; falling back on auto-configuration
no configs found; falling back on auto-configuration
creating tmp directory c:\users\ni\appdata\local\temp\si601lab6_sol.Ni.20131019.
052147.951000
writing to c:\users\ni\appdata\local\temp\si601lab6_sol.Ni.20131019.052147.95100
0\step-0-mapper_part-00000
Traceback (most recent call last):
  File "si601lab6_sol.py", line 29, in <module>
    BiGramFreqCount.run()
  File "C:\Python27\lib\site-packages\mrjob\job.py", line 500, in run
    mr_job.execute()
  File "C:\Python27\lib\site-packages\mrjob\job.py", line 518, in execute
    super(MRJob, self).execute()
  File "C:\Python27\lib\site-packages\mrjob\launch.py", line 146, in execute
    self.run_job()
  File "C:\Python27\lib\site-packages\mrjob\launch.py", line 207, in run_job
    runner.run()
  File "C:\Python27\lib\site-packages\mrjob\runner.py", line 458, in run
    self._run()
  File "C:\Python27\lib\site-packages\mrjob\sim.py", line 182, in _run
    self._invoke_step(step_num, 'mapper')
  File "C:\Python27\lib\site-packages\mrjob\sim.py", line 269, in _invoke_step
    working_dir, env)
  File "C:\Python27\lib\site-packages\mrjob\inline.py", line 155, in _run_step
    os.chdir(working_dir)
WindowsError: [Error 5] Access is denied: 'c:\\users\\ni\\appdata\\local\\temp\\
si601lab6_sol.Ni.20131019.052147.951000\\job_local_dir\\0\\mapper\\0'

python文件非常簡單:

#!/usr/bin/python

# python si-601-lab-5.py input.txt
# Some codes used courtesy of Dr. Yuhang Wang.

from mrjob.job import MRJob
import re

class BiGramFreqCount(MRJob):

  ### input: self, in_key, in_value
  def mapper(self, _, line):
    yield "chars", len(line)
    yield "words", len(line.split)
    yield "lines",1

    ### Task2: replace this part and use bigram (this word and its next word) as the key
    ###        and skip the last word in each line
    print '== mapper output =='
    for word in words:
      print [word, 1]
      yield(word, 1)
    print

  ### input: self, in_key from mapper, in_value from mapper
  def reducer(self, key, values):
    yield (key, sum(values))

if __name__ == '__main__':
  BiGramFreqCount.run()

我一直在嘗試修復此問題幾個小時,但沒有成功...希望有人可以幫助我。 謝謝!

問題解決了。 當我以管理員身份運行命令提示符時,一切正常。 但是我仍然感到困惑,因為在我的用戶配置文件屬性設置中,我是系統管理員。 那么,為什么我仍然需要以管理員身份運行程序? 我正在使用Win8以防萬一。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM