code: func EncodeFunctionCallFromFile(abiFileName, abiPath, funcName string, logger *logging.Logger, args ...interface{}) ([]byte, *FunctionSpec, error) {
  	abiSpecBytes, err := readAbi(abiPath, abiFileName, logger)
  	if err != nil {
  		return []byte{}, nil, err
  	}
  
  	return EncodeFunctionCall(abiSpecBytes, funcName, logger, args...)
  }
docs: // EncodeFunctionCallFromFile ABI encodes a function call based on ABI in file, and the
  // arguments specified as strings.
  // The abiFileName specifies the name of the ABI file, and abiPath the path where it can be found.
  // The fname specifies which function should called, if
  // it doesn't exist exist the fallback function will be called. If fname is the empty
  // string, the constructor is called. The arguments must be specified in args. The count
  // must match the function being called.
  // Returns the ABI encoded function call, whether the function is constant according
  // to the ABI (which means it does not modified contract state)