-1

以前、構文エラーに関する質問をここに投稿しました。 Invalid Syntax error in Python Code I copy from the Internet . 幸いなことに、私の問題はあなたのおかげで非常に迅速に修正されました. しかし、構文エラーがなくなったので、このコードで何をすべきかわからないので、どうしようもありませんでした。私が言ったように、私は 3 年前に基本的な Python トレーニングを行ったことがありますが、人間の脳は物事をすぐに忘れてしまうようです。

つまり、いくつかのファイルのグリッド解像度を半分に下げる必要があり、それを行う方法を何週間も探していました。幸いなことに、探していることを正確に実行すると思われる Python コードをいくつか見つけました。コードは次のとおりです。

#!/bin/env python
# -----------------------------------------------------------------------------
# Reduce grid data to a smaller size by averaging over cells of specified
# size and write the output as a netcdf file.  xyz_origin and xyz_step
# attributes are adjusted.
#
# Syntax: downsize.py <x-cell-size> <y-cell-size> <z-cell-size>
#                       <in-file> <netcdf-out-file>
#
import sys

import Numeric

from VolumeData import Grid_Data, Grid_Component

# -----------------------------------------------------------------------------
#
def downsize(mode, cell_size, inpath, outpath):

  from VolumeData import fileformats
  try:
    grid_data = fileformats.open_file(inpath)
  except fileformats.Uknown_File_Type as e:
    sys.stderr.write(str(e))
    sys.exit(1)

  reduced = Reduced_Grid(grid_data, mode, cell_size)

  from VolumeData.netcdf.netcdf_grid import write_grid_as_netcdf
  write_grid_as_netcdf(reduced, outpath)

# -----------------------------------------------------------------------------
# Average over cells to produce reduced size grid object.
#
# If the grid data sizes are not multiples of the cell size then the
# final data values along the dimension are not included in the reduced
# data (ie ragged blocks are not averaged).
#
class Reduced_Grid(Grid_Data):

  def __init__(self, grid_data, mode, cell_size):

    size = map(lambda s, cs: s / cs, grid_data.size, cell_size)
    xyz_origin = grid_data.xyz_origin
    xyz_step = map(lambda step, cs: step*cs, grid_data.xyz_step, cell_size)
    component_name = grid_data.component_name
    components = []
    for component in grid_data.components:
      components.append(Reduced_Component(component, mode, cell_size))

    Grid_Data.__init__(self, '', '', size, xyz_origin, xyz_step,
                       component_name, components)

# -----------------------------------------------------------------------------
# Average over cells to produce reduced size grid object.
#
class Reduced_Component(Grid_Component):

  def __init__(self, component, mode, cell_size):

    self.component = component
    self.mode = mode
    self.cell_size = cell_size
    Grid_Component.__init__(self, component.name, component.rgba)

  # ---------------------------------------------------------------------------
  #
  def submatrix(self, ijk_origin, ijk_size):

    ijk_full_origin = map(lambda i, cs: i * cs, ijk_origin, self.cell_size)
    ijk_full_size = map(lambda s, cs: s*cs, ijk_size, self.cell_size)
    values = self.component.submatrix(ijk_full_origin, ijk_full_size)

    if mode == 'ave':
      m = average_down(values, self.cell_size)

これを .py ファイルとして保存し、ダブルクリックすると、コマンド プロンプトが数ミリ秒間表示されてから消えます。そのコマンド プロンプトのスクリーンショットを撮ることができました。「'bin/env python "C:\Users............py" を使用してプロセスを作成できません」というメッセージが表示されます。

私がやりたいことは、コードが使用するように指示する構文を使用して、このダウンサイジングを実行できるようにすることです。

# Syntax: downsize.py <x-cell-size> <y-cell-size> <z-cell-size>
    #                       <in-file> <netcdf-out-file>

手伝って頂けますか ?

4

1 に答える 1

0

ファイルをダブルクリックして実行しないでください。新しいシェルを開き、ファイルへのパス.py(または単にcd親ディレクトリへのパス) を入力し、その後に渡す引数を入力して、ファイルを実行します。例えば:

python downsize.py 1 2 3 foo bar
于 2013-03-02T17:42:54.367 に答える